【问题标题】:EOFException on file based inter process communication基于文件的进程间通信的 EOFException
【发布时间】:2012-05-23 07:41:14
【问题描述】:

Process-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,还有其他替代方法吗?

【问题讨论】:

  • 也许您可以展示用于写入和读取这些流的代码?
  • 我没有粘贴任何代码,因为它是使用 fileoutputstream 和 datainputstream 的标准文件 i/o 代码,没有什么不寻常的。仅在 2 个不同的过程中完成。

标签: java linux file eofexception


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-08-14
    • 2012-06-19
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多