数据流
按照类型存储,写入顺序和读取顺序需要一致
为了方便地操作Java语言的基本数据类型和String的数据,可以使用数据流。 数据流有两个类:(用于读取和写出基本数据类型、String类的数据)
public static void main(String[] args) {
//创建字节输出流
try (FileOutputStream fos = new FileOutputStream("D:/123.txt");
//创建数据输出流
DataOutputStream dos = new DataOutputStream(fos);){
dos.writeByte(1);
dos.writeInt(4);
dos.writeShort(2);
dos.writeDouble(5.7);
dos.writeUTF("哈哈哈哈");
//刷缓存
dos.flush();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public static void main(String[] args) {
try (
FileInputStream fis = new FileInputStream("D:/123.txt");
DataInputStream dis = new DataInputStream(fis);
) {
//输入输出数据顺序必须一致
System.out.println(dis.readByte());
System.out.println(dis.readInt());
System.out.println(dis.readShort());
System.out.println(dis.readDouble());
System.out.println(dis.readUTF());
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
序列化和反序列化
* 创建对象的4中方式
*
* 1new 用的最多
* 2 反射机制
* 3 反序列化
* 4 clone不用了,被序列化代替,Object.clone()
*
* 之前我们都是把数据放到硬盘中,对象都是在内存中的,从来没把对象放硬盘中
*
* 但是硬盘中的数据可以持久化的(长期保存) 但是内存中不同,比如关机
*
* 而有时候我们的对象也是需要长期保存的 ,所以出现了序列化技术,把对象持久化保存到硬盘中
*
*
* 序列化:把对象保存到硬盘中,可以持久化存储
*
* 反序列化:把硬盘中的对象文件,载入到内存中 ObjectInoputStream
*
* 并且要被序列化对象所在的类,必须实现Serializbale接口,该接口中没有任何方法,仅仅是标记
*
*
* 目的:
*
* 1长时间存储对象
*
* 2对象传递
*
* 应用场景:
*
* 序列化就是将数据对象转换为二进制流
*
* 如果对象不进行序列化操作,那么就没有办法存储和传输从而能够进行数据持久化和网络传输过程
*
* 反序列化就是序列化的逆向处理过程
*
* 传递过程:
* 数据对象 -->序列化
public static void main(String[] args) {
User user = new User("张三",18);
try (
//字节输入流
FileOutputStream fos = new FileOutputStream("D:/user");
//创建序列化对象,并把字节输出流传入
ObjectOutputStream oos = new ObjectOutputStream(fos);
){
//写出对象
oos.writeObject(user);
//刷缓存
oos.flush();
//关闭流
oos.close();
} catch (Exception e) {
// TODO: handle exception
}
}
-- 二进制流 -- 加密处理 -- 网络传输 -- 数据解密 -- 反序列化 -- 数据对象
*