老师,EOF异常按照问答区评论修改后还报错,麻烦帮忙看下!

来源:5-3 自由编程

慕码人2344042

2019-07-10 20:50:29

package com.imooc.io;


import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;


public class ProductTest {


public static void main(String[] args) {

Product p1 = new Product(1, "a", "aa", 11);

Product p2 = new Product(2, "b", "bb", 22);

Product p3 = new Product(3, "c", "cc", 33);

Product p4 = new Product(4, "d", "dd", 44);

try {

FileOutputStream fw = new FileOutputStream("H:\\学习总结\\imooc学习总结\\File\\product.txt");

ObjectOutputStream osw = new ObjectOutputStream(fw);

osw.writeObject(p1);

osw.writeObject(p2);

osw.writeObject(p3);

osw.writeObject(p4);

osw.flush();

FileInputStream fi = new FileInputStream("H:\\学习总结\\imooc学习总结\\File\\product.txt");

ObjectInputStream ois = new ObjectInputStream(fi);

try {

Product p = null;

while ((p = (Product) ois.readObject()) != null) {

System.out.println(p);

}

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

ois.close();

fi.close();

osw.close();

fw.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}




Product [id=1, name=a, categories=aa, price=11.0]

Product [id=2, name=b, categories=bb, price=22.0]

Product [id=3, name=c, categories=cc, price=33.0]

Product [id=4, name=d, categories=dd, price=44.0]

java.io.EOFException

at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2960)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1540)

at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)

at com.imooc.io.ProductTest.main(ProductTest.java:32)


写回答

1回答

好帮手慕阿满

2019-07-11

同学你好,EOFException异常是因为当读取过程中意外到达文件或流的末尾时,会抛出此IO异常。建议同学在写入文件后,加一句osw.writeObject(null);表示到了文件末尾,如:

http://img.mukewang.com/climg/5d26a7fc0001d26006160261.jpg

这样在读取时文件读到null表示读到末尾就不会再报错了。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

0

0 学习 · 11489 问题

查看课程