例子程序:
package io; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; public class TestDataStream { public static void main(String[] args) { /** * 在内存里创建一个字节数组,ByteArrayOutputStream这根管道是怼到了内存上 */ ByteArrayOutputStream baos = new ByteArrayOutputStream(); //将基本 Java 数据类型写入输出流中 DataOutputStream dos = new DataOutputStream(baos); try { //写入double类型,8个字节 dos.writeDouble(Math.random()); dos.writeBoolean(true);//布尔类型1个字节 /** * 相当于这根管道怼到了ByteArrayOutputStream上边。拿到了字节数组在内存的引用。 */ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); //输入流剩余可读字节数 System.out.println(bais.available());//一共9个字节 DataInputStream dis = new DataInputStream(bais); System.out.println(dis.readDouble()); System.out.println(dis.readBoolean()); /** * colse之后,内存的字节数组没了。 */ dos.close(); dis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }