当我试图寻找某个文件时,我遇到了以下异常。
> 在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
答案 0 :(得分:2)
在尝试对同时从另一个进程写入的文件进行随机访问时,我会非常小心。正如您现在所经历的那样,它可能会导致各种奇怪的同步问题。
您是否在执行seek()的过程中确定文件的长度?其他修改处理是否已完成flush()?
答案 1 :(得分:1)
写入数据的过程可能已被告知要写入数据,但数据可以缓冲写入。在尝试读取数据之前,请务必在输出流上调用flush()。