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

标签 java

当我尝试查找某个文件时,出现以下异常。

> 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/

相关文章:

Java容器

java - 从同一包中的不同类调用新方法

java - 计划任务问题

java - Spring saml 与 IDP 服务器集成导致 SSL 对等主机名验证失败,名称为 : null

java - 无法实例化集合持久化器

java - libgdx - box2d 速度和力不起作用

java - 无法从唯一字段的外键表中获取数据

java - 如何在共享数据库中存储java应用程序指标

java - 如何在运行时传递数组的大小?

java - 如何在 Realm 数据库中创建或实现自关系?