正在回答
4回答
同学你好,writerObject(null)只是针对本小节的练习的解决方案,对于同学的这种动态写入,并不适合这种文件的操作,同学可以在学习到数据库时,使用数据库操作,向数据库中动态的插入数据。祝:学习愉快~
乃好
2019-02-18 15:49:53
Test类:
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class Test { public static void main(String[] args) throws IOException, ClassNotFoundException { FileOutputStream fos = new FileOutputStream("a.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); FileInputStream fis = new FileInputStream("a.txt"); ObjectInputStream ois = new ObjectInputStream(fis); Car c1 = new Car(3); Car c2 = new Car(4); Car c3 = new Car(5); oos.writeObject("a"); oos.writeObject("b"); oos.writeObject("c"); //oos.writeObject(null); oos.flush(); String temp; while((temp=(String)ois.readObject()) != null) { System.out.println(temp); } }
你可以测试一下这段代码,发现写入的内容都读入且输出了,但是最后会报错,老师的建议是在写入多个对象后再写入一个null,这样下面使用 while((temp=(String)ois.readObject()) != null)来判断时就不会报错
问题是如果有这样一种情况:写入了2个对象,读取输出一下,
oos.writeObject("d"); oos.writeObject("e");
此时要求读取输出这个两个对象,可是这样使用while((temp=(String)ois.readObject()) != null)循环读取输出时,最后会报错
那么按照老师的说法最后加个null,像这样:
oos.writeObject("d"); oos.writeObject("e"); oos.writeObject(null);
这样确实不会报错了,可是现在又要写入两个对象继续读取呢
oos.writeObject("f"); oos.writeObject("g");
此时怎么读取呢?矛盾点在于,之前已经加入了null对象,无法使用循环判断是否为null输入了呀
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星