当我尝试查找某个文件时,出现以下异常。
> Error while seeking to 38128 in myFile, File length: 85742 java.io.EOFException at java.io.RandomAccessFile.readInt(RandomAccessFile.java:725) at java.io.RandomAccessFile.readLong(RandomAccessFile.java:758) >
但是如果您看到我正在尝试查找“38128”,其中文件长度为“85742”。报EOF异常。我想知道这怎么可能?另一个进程定期将内容附加到该文件并关闭文件处理程序。它使用 DataOutputStream 附加内容。我的过程是尝试寻找某些位置并阅读它。另一件事是我只遇到过一次这个异常。我试图重现它,但它再也没有发生过。该文件仅位于本地磁盘中。没有文件管理器。
谢谢 D.L.库马尔
最佳答案
当尝试对同时从另一个进程写入的文件进行随机访问时,我会非常小心。正如您现在遇到的那样,它可能会导致各种奇怪的同步问题。
您是否通过与执行seek() 的进程相同的进程来确定文件的长度?其他修改处理是否完成了flush()?
关于java - 使用 Java IO 函数读取文件时出现神秘的 EOF 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/461130/