序列化流与反序列化流,打印流
序列化流与反序列化流
ObjectOutputStream(序列化流) 将 Java 自定义对象写入 OutputStream。可以使用 ObjectInputStream(反序列化流) 读取对象。通过在流中使用文件可以实现对象的持久存储。
ObjectOutputStream 序列化流
writeObject() 将指定的对象写入ObjectOutputStream
例:
//创建对象
person per=new person("小红帽",18);//自定义类
//目的地
FileOutputStream fos=new FileOutputStream("D:\\text\\per.txt");
//创建序列化流
ObjectOutputStream oos=new ObjectOutputStream(fos);
//写入对象
oos.writeObject(per);
oos.close();
ObjectInputStream 反序列化流
readObject() 读取对象
例:
FileInputStream fis=new FileInputStream("D:\\text\\per.txt");
//创建反序列化流
ObjectInputStream ois=new ObjectInputStream(fis);
//读对象
Object obj=ois.readObject();
System.out.println(obj);
ois.close();
序列化接口
当一个对象要能被序列化,这个对象所属的类必须实现Serializable接口。否则会发生异常NotSerializableException异常。
implements Serializable//继承序列化接口//标识作用
瞬态关键字transient
当一个类的对象需要被序列化时,某些属性不需要被序列化,这时不需要序列化的属性可以使用关键字transient修饰。只要被transient修饰了,序列化时这个属性就不会序列化了。
同时静态修饰也不会被序列化,因为序列化是把对象数据进行持久化存储,而静态的属于类加载时的数据,不会被序列化。
打印流
字节打印流 PrintStream
字符打印流 PrintWriter
print(String str): 输出任意类型的数据,
println(String str): 输出任意类型的数据,自动写入换行操作
打印流自动刷新功能:
//前提:传入输出流
FileWriter fw=new FileWriter("D:\\text\\print.txt",true);
//
PrintWriter pw=new PrintWriter(fw,true);