2012-05-15 18 views
0

進程-A使用FileOutputStream將字節寫入數據文件。 進程-B使用DataInputStream從相同的數據文件中讀取數據。基於文件的進程間通信的EOFException

數據文件駐留在NFS安裝不支持FileLocks因此使用以下方法:

過程-A創建了一個鎖定文件通知過程-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?

+0

也許你可以顯示你用來寫入和讀取這些流的代碼? –

+0

我沒有粘貼任何代碼,因爲它使用fileoutputstream和datainputstream的標準文件I/O代碼,沒有出現普通的問題。只在2個不同的過程中完成。 –

+0

[EOFException - 如何處理?]的可能重複(http://stackoverflow.com/questions/18451232/eofexception-how-to-handle) – Raedwald

回答

0

沒什麼問題。您已到達流的末尾。同伴已關閉連接。關閉你的結局並忘掉它。