01/10/2018, 00:21
[Nhờ sửa lỗi]EOFException khi đọc danh sách đối tượng đã được ghi từ file
Mọi người cho em hỏi, em đã ghi 4 đối tượng HocSinh
ra 1 file, bây giờ em đọc file đó để lấy các đối tượng ra.
Em làm theo 2 cách:
####Cách 1:
Giả định biết số đối tượng trong file (bằng 4) thì chương trình chạy đúng.
for (int i = 0; i < 4; i++) {
obj = ois.readObject(); //ois là 1 đối tượng ObjectInputStream
HocSinh hs = (HocSinh) obj;
System.out.println(hs);
}
####Cách 2:
Em chạy cách 2 thì vẫn ra được đủ 4 đối tượng nhưng kèm theo Error.
while((obj = ois.readObject()) != null) {
HocSinh hs = (HocSinh) obj;
System.out.println(hs);
}
Mọi người giải thích giúp em cách 2 sai ở đâu với ạ!
Em cảm ơn!
![](/pictures/picfullsizes/2018/10/01/hjk1538405857.png)
Bài liên quan
First of all, readObject() only returns null if you wrote null to the stream when creating it. If there is no more data in the stream, it will throw an EOFException.
If you don’t expect the EOF, the reason is probably that the stream is corrupt. This can happen if you forget to close it after writing data to it.
Lỗi này xảy ra khi chương trình (ios.read) hiểu hoặc hiểu nhầm là đã đến cuối file và không tìm thấy data nữa.
Giải pháp cho vấn đề này