老师,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回答
同学你好,EOFException异常是因为当读取过程中意外到达文件或流的末尾时,会抛出此IO异常。建议同学在写入文件后,加一句osw.writeObject(null);表示到了文件末尾,如:
这样在读取时文件读到null表示读到末尾就不会再报错了。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题
回答 1
回答 1