使用Java IO函数读取文件时出现神秘的EOF异常

时间:2009-01-20 12:41:12

标签: java

当我试图寻找某个文件时,我遇到了以下异常。

  

>   在myFile中寻找38128时出错,文件长度:85742   java.io.EOFException的       在java.io.RandomAccessFile.readInt(RandomAccessFile.java:725)       在java.io.RandomAccessFile.readLong(RandomAccessFile.java:758)   >

但如果你看到我试图寻找'38128',那么文件长度为'85742'。它报告了EOF异常。我想知道它有可能吗?另一个进程定期将内容附加到该文件并关闭文件处理程序。它使用DataOutputStream附加内容。我的过程是试图寻找一些地方并阅读它。还有一件事是我只有一次这个例外。我试图重现它,但它再也没有发生过。该文件仅在本地磁盘中。没有档案。

由于 D. L. Kumar

2 个答案:

答案 0 :(得分:2)

在尝试对同时从另一个进程写入的文件进行随机访问时,我会非常小心。正如您现在所经历的那样,它可能会导致各种奇怪的同步问题。

您是否在执行seek()的过程中确定文件的长度?其他修改处理是否已完成flush()?

答案 1 :(得分:1)

写入数据的过程可能已被告知要写入数据,但数据可以缓冲写入。在尝试读取数据之前,请务必在输出流上调用flush()。