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