ObjectOutputStream(序列化流)
ObjectOutputStream是序列化流,可以将Java程序中的对象写到文件中。
ObjectOutputStream 构造方法:
ObjectOutputStream(OutputStream out):参数要传递字节输出流。
ObjectOutputStream写对象的方法(特有方法):
void writeObject(Object obj): 向文件中写对象。
ObjectOutputStream 的使用步骤:
创建序列化流,用来写。
调用 writeObject 方法,写对象。
释放资源。
注意: 要使用序列化流向文件中写的对象,必须实现 Serializable 接口。
例:
1 // 创建一个Person对象
2 Person p=new Person("大灰狼",18);
3 //明确目的地
4 FileOutputStream fos=new FileOutputStream("D:\\demo0723\\person.txt");//不能续写true
5 //创建序列化流
6 ObjectOutputStream oos=new ObjectOutputStream(fos);
7 //将对象写入文件中
8 oos.writeObject(p);
9 //释放资源
10 oos.close();
ObjectInputStream(反序列化流)
ObjectInputStream 是反序列化流, 可以将文件中的对象读取到 Java 程序中。
ObjectInputStream 的构造方法:
ObjectInputStream(InputStream in):参数要传递字节输入流。
ObjectInputStream 读取对象的方法(特有的方法):
Object readObject(): 从文件中读取对象,并将该对象返回。
反序列化流的使用步骤:
创建 ObjectInputStream 反序列化流。
调用 readObject 方法,读取对象。
释放资源。
注意:调用 readObject 方法读取对象时,对象所对应的类不存在,那么会报错(ClassNotFoundException)
1 public static void read() throws ClassNotFoundException, IOException{
2 //明确数据源
3 FileInputStream fis=new FileInputStream("D:\\demo0723\\person.txt");
4 //创建反序列化刘
5 ObjectInputStream ois=new ObjectInputStream(fis);
6 //从person.txt中将对象读取出来
7 Person p=(Person)ois.readObject();
8 System.out.println(p);
9 //释放资源
10 ois.close();
11 }
特殊情况:
被 static 修饰的成员变量无法序列化,无法写到文件。
如果不希望某个成员变量写到文件,同时又不希望使用 static 关键字, 那么可以使用 transient。transient 关键字表示瞬态,被 transient 修饰的成员变量无法被序列化。
如果想要修改序列化后的文件 ,也可以加serialVersionUID,使序列化时生成的值与反序列化时值一致。

打印流:
打印流是输出信息最方便的类,注意包含字节打印流PrintStream和字符打印流:PrintWriter。打印流提供了非常方便的打印功能,
可以打印任何类型的数据信息,例如:小数,整数,字符串。
打印流的特点:
不负责数据源,只负责数据目的
为其他输出流,添加功能
永远不会抛出IO异常,但是可能抛出别的异常
特有的方法:print()和println()方法,System.out.print()方法可以打印任何数据类型。
PrintSteam构造方法接收:
File类型、字符串文件名、字节输出流OutputStream
例:
//明确目的地
FileOutputStream fos=new FileOutputStream("D:\\demo0723\\print.txt");
//创建打印流
PrintStream ps=new PrintStream(fos);
//输出
ps.print("你好");
ps.print(true);
ps.println(123);
//释放资源
ps.close();
PrintWriter构造方法接收:
File类型、字符串文件名、字节输出流OutputStream、字符输出流Writer
例:
1 //明确目的地
2 FileWriter fw=new FileWriter("D:\\demo0723\\print.txt",true); //续写
3 //创建字符打印流
4 PrintWriter pw=new PrintWriter(fw,true);//自动刷新
5 //输出
6 pw.println(false);
7 pw.println("大灰狼");
8 pw.print(1.2);
9 //释放资源
10 pw.close();