1.读出null标记
public static void main(String[] args) throws IOException, ClassNotFoundException {
Cat cat1 = new Cat("ketty", 22);
Cat cat2 = new Cat("ann", 10);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:\\Users\\woniuxy\\Desktop\\各种api\\cat.txt"));
oos.writeObject(cat1);
oos.writeObject(cat2);
oos.writeObject(null);//结束标记 便于以下while判断跳出循环
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("C:\\Users\\woniuxy\\Desktop\\各种api\\cat.txt"));
Cat cat=null;
//但其实程序到此处 读取不到null 不能判断结束标记在哪————报错
//在all对象后 加结束标记 oos.writeObject(null); 就可
while ((cat=(Cat)ois.readObject())!=null){
System.out.println(cat);
}
if (ois!=null){
ois.close();
}
}
2.用 集合/数组 打包
public static void main(String[] args) throws Exception{
// 创建集合 或 数组 打包对象写入文件
ArrayList<Cat> cats = new ArrayList<>();
cats.add(new Cat("ketty", 22));
cats.add(new Cat("ann", 10));
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:\\Users\\woniuxy\\Desktop\\各种api\\cat.txt"));
oos.writeObject(cats);
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("C:\\Users\\woniuxy\\Desktop\\各种api\\cat.txt"));
ArrayList<Cat> cats=(ArrayList<Cat>)ois.readObject();//仅读1次拿到1个打包的集合
for (Cat cat : cats) {
System.out.println(cat);
}
ois.close();
}