@Test
public void t3() {
// 数据输入流
ByteArrayInputStream byteArrayInputStream = null;
// 数据输出流
ByteArrayOutputStream byteArrayOutputStream = null;
// 内存输出流
DataInputStream dataInputStream = null;
// 内存输入流
DataOutputStream dataOutputStream = null;
try {
// 内存IO流,读取时,需要按照写入的顺序去读取
// 创建数据,输出流
byteArrayOutputStream = new ByteArrayOutputStream();
// 将数据输出流,包装成内存输出流
dataOutputStream = new DataOutputStream(byteArrayOutputStream);
// 利用内存输出流,将数据输出到内存中
dataOutputStream.writeInt(12345);// Int:4字节
dataOutputStream.writeFloat(12.4F);// Float:4字节
dataOutputStream.writeBoolean(true);// boolean:1字节
// 获取数据输出流,的字符数组,传入到,数据输入输出流
byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
// 将数据数组输入流,包装成内存输入流
dataInputStream = new DataInputStream(byteArrayInputStream);
// 利用内存输入流获取,输出到内存的数据
System.out.println(dataInputStream.available());//打印缓存的长度 = 9
System.out.println(dataInputStream.readInt());
System.out.println(dataInputStream.readFloat());
System.out.println(dataInputStream.readBoolean());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (byteArrayInputStream != null) {
try {
byteArrayInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (byteArrayOutputStream != null) {
try {
byteArrayOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (dataInputStream != null) {
try {
dataInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (dataOutputStream != null) {
try {
dataOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
内存流的方法:
intCount(int value),数据输出流增加的字节数.
write(int b),将int类型的b写到数据输出流中.
write(byte b[],int off, int len),将字节数组b中off位置开始,len个长度写到数据输出流中.
flush(),刷新数据输出流.
writeBoolean(),将布尔类型的数据写到数据输出流中,底层是转化成一个字节写到基础输出流中.
writeByte(int v),将一个字节写到数据输出流中(实际是基础输出流).
writeShort(int v),将一个short类型的数据写到数据输出流中,底层将v转换2个字节写到基础输出流中.
writeChar(int v),将一个charl类型的数据写到数据输出流中,底层是将v转换成2个字节写到基础输出流中.
writeInt(int v),将一个int类型的数据写到数据输出流中,底层将4个字节写到基础输出流中.
writeLong(long v),将一个long类型的数据写到数据输出流中,底层将8个字节写到基础输出流中.
writeFloat(flloat v),将一个float类型的数据写到数据输出流中,底层会将float转换成int类型,写到基础输出流中.
writeDouble(double v),将一个double类型的数据写到数据输出流中,底层会将double转换成long类型,写到基础输出流中.
writeBytes(String s),将字符串按照字节顺序写到基础输出流中.
writeChars(String s),将字符串按照字符顺序写到基础输出流中.
writeUTF(String str),以机器无关的方式使用utf-8编码方式将字符串写到基础输出流中.
size(),写到数据输出流中的字节数.