ObjectOutputStream和ObjectInputStream的简单使用

使用ObjectOutputStream往文本写内容时,首先在文本里面标记开始,然后是内容,最后加上结束标示。如果想再次往文本里面添加内容的话,就要加在开始标示之后和结束标示之前,不然会读取不到写入的内容。

 1 import java.io.FileInputStream;
 2 import java.io.FileOutputStream;
 3 import java.io.ObjectInputStream;
 4 import java.io.ObjectOutputStream;
 5 import java.io.Serializable;
 6 
 7 
 8 public class ObjectBuffer {
 9     public static void main(String[] args) throws Exception {
10         ObjectOutputStream oos = new ObjectOutputStream(new
11                 FileOutputStream("src/TXT/Z.txt",false));//工程里面的路径
12         oos.writeObject(new User("java",16));
13         oos.writeObject(new User("C++",18));
14         oos.writeObject(new User("c语言",22));
15         oos.writeObject(null);   //最后添加一个空对象,作为后面读取内容的判断
16         oos.flush();
17         oos.close();
18         //第一次使用ObjectOutputStream往文本写内容时,就会自动在文本内容最后打上结束标示。
19         //当再次使用ObjectOutputStream往里面写入内容时,内容加在上次内容的后面,当使用ObjectInputStream读取内容时,
20         //因为第一次写入内容时,在后面加上了结束标示,将会读取不到第二次写入的内容。
21 
22         ObjectInputStream ois = new ObjectInputStream(new FileInputStream("src/TXT/Z.txt"));
23         User u;
24         while((u = (User) ois.readObject()) != null){
25             System.out.println(u);
26         }
27         ois.close();
28     }
29 }
30 class User implements Serializable{
31     static int n = 0;
32     private String name;
33     private int age;
34     public String getName() {
35         return name;
36     }
37     public void setName(String name) {
38         this.name = name;
39     }
40     public int getAge() {
41         return age;
42     }
43     public void setAge(int age) {
44         this.age = age;
45     }
46     public User(String name, int age) {
47         super();
48         n++;
49         this.name = name;
50         this.age = age;
51     }
52     public User() {
53         super();
54     }
55     @Override
56     public String toString() {
57         n--;
58         return "User [name=" + name + ", age=" + age + "]";
59     }
60 }

输出结果: 
User [name=Java, age=16] 
User [name=C++, age=18] 
User [name=C语言, age=22]

原文地址:https://www.cnblogs.com/benxi/p/7308532.html