java - 基于文件的进程间通信的 EOFException

标签 java linux file eofexception

进程 A 使用 FileOutputStream 将字节写入数据文件。 Process-B 使用 DataInputStream 从同一数据文件读取。

数据文件驻留在不支持 FileLocks 的 NFS 挂载上,因此使用以下方法:

进程A创建一个锁文件来通知进程B它可以开始读取数据文件。它在刷新并关闭 FileOutputStream 后创建锁定文件。 Process-B 检查锁定文件是否存在,然后开始读取数据文件。但是,有时会遇到EOFException。

java.io.EOFException
        at java.io.DataInputStream.readFully(DataInputStream.java:180)
        at java.io.DataInputStream.readUTF(DataInputStream.java:592)
        at java.io.DataInputStream.readUTF(DataInputStream.java:547)


java.io.EOFException
        at java.io.DataInputStream.readInt(DataInputStream.java:375)
        at java.io.DataInputStream.readFloat(DataInputStream.java:429)

有人可以解释一下,出了什么问题吗?另外,鉴于我无法使用 FileLock api,是否还有其他替代方法?

最佳答案

没有任何问题。您已到达流的末尾。对等方已关闭他的连接端。关闭你的结局并忘记它。

关于java - 基于文件的进程间通信的 EOFException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10606758/

相关文章:

java - 自编程二叉树中方法参数问题

c - 在C中获取终端宽度?

linux - 如何在句子中搜索类似 Twitter 的名称?

Java读取文件--文件/目录未找到

Java : How to map the json string returned by Oauth2 service to model class object

Java编程: Integer value to Hexadecimal

java - 如何使变量等于 Java 文本文件中的随机行?

c - 为什么“while(!feof(file))”总是错误的?

java - Jtds SetFloat 在数据库中输入不均匀值(Microsoft Sql Server)

linux - 通过 SSH 服务器获取 SCP 到本地的权限被拒绝