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

时间:2012-05-15 18:33:35

标签: java linux file eofexception

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

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

Process-A创建一个锁定文件,通知Process-B它可以开始读取数据文件。它在刷新并关闭FileOutputStream后创建锁文件。进程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?

1 个答案:

答案 0 :(得分:0)

没有什么是错的。您已到达流的末尾。同伴关闭了他的连接结束。关闭你的结局并忘记它。