DataInputStream&&DataOutputStream
作用:
特点:
-
数据类型按顺序写入并且按顺序读出
DataOutputStream
特点:
-
保存了数据类型写入到输出流当中,构造器需要一个字节流,内部要有一个最底层的节点流
-
底层节点流
-
1、File
-
2、ByteArray
-
DataInputStream
特点:
-
构造器放入输入流
-
有大量的读取数据类型的方法
一个完整的IO流需要涉及的流
-
一个节点流
-
可有可无的装饰流--->加速读取数据类型
-
需要转型的时候用到字节或字符流
DataIputStream和DataOutputStream的演示demo
package iostudy.data;
import java.io.*;
/**
* 数据流
* 1、先写出在读取--->先写出在读取
* 2、读取的顺序和写出的顺序一致
* @since JDK 1.8
* @date 2021/5/24
* @author Lucifer
*/
public class DataTest {
public static void main(String[] args) throws IOException{
//DataOutputStream--->保存了数据类型写入输出流当中--->构造器需要一个字节流,内部要有一个最底层的节点流
/*
底层节点流
1、File
2、ByteArray--->新增的方法toByteArray意味着不需要多态
!!!任何数据都可以转成字节数组
*/
//写出
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(
new BufferedOutputStream(
baos
)
);
//操作数据类型 + 数据
dos.writeUTF("我是真的帅");
dos.writeInt(21);
dos.writeBoolean(false);
dos.writeChar('c');
//刷新一下
dos.flush();
/*
上面的操作是将那些数据类型的数据写入到字节数组缓冲流当中
*/
//存放数据的字节数组
byte[] datas = baos.toByteArray();
//读取
DataInputStream dis = new DataInputStream(
//最外层装饰器
new BufferedInputStream(
new ByteArrayInputStream(
datas
)
)
);
/*
有里到外
1、节点流
2、节点数据类型转换流
3、装饰流
*/
//按照写入的数据类型读取
String msg = dis.readUTF();
int age = dis.readInt();
boolean flag = dis.readBoolean();
char ch = dis.readChar();
System.out.println(msg);
}
}