序列化流与反序列化流,打印流

序列化流与反序列化流

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);

 

posted @ 2019-03-31 19:03  fdbnf  阅读(134)  评论(0编辑  收藏  举报