正在回答
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 星