0

プロセス A は、FileOutputStream を使用してデータ ファイルにバイトを書き込みます。プロセス B は、DataInputStream を使用して同じデータ ファイルから読み取ります。

データ ファイルは、FileLocks をサポートしない NFS マウント上に存在するため、次のアプローチが使用されます。

プロセス 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 を使用できないことを考えると、他の代替アプローチはありますか?

4

1 に答える 1

0

何も問題はありません。ストリームの終わりに到達しました。ピアが接続の終了を閉じました。あなたの終わりを閉じて、それを忘れてください。

于 2012-05-15T23:30:33.423 に答える