0

プログラムで入力テキスト ファイルをロックしたいので、同じファイルで次のプログラムが実行されるとクラッシュします (例外がスローされます)。「java.nio.channels.FileLock」でファイルをロックできることはわかっていますが、ファイルが書き込み用に開かれており、テキスト ファイルを読み取り専用に開いている場合にのみ可能です。ファイルの読み取りに「RandomAccessFile」を使用したくないのは、速度が遅すぎて、ファイル サイズが非常に大きい (10 GB) ためです。今、私は自分のファイルを読むためにこれを使用します:

FileInputStream fstream = new FileInputStream(this.inputFileName);  
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));  

これはテキストファイルを読むための速い方法だと思います。テキスト入力ファイルをロックするにはどうすればよいですか?

4

1 に答える 1

1

「java.nio.channels.FileLock」でファイルをロックできることは知っていますが、ファイルが書き込み用に開かれている場合にのみ可能です。

私の知る限り、これは正しくありません。

読み取り用に開いているファイルまたはファイルの領域で FileLock を取得できます。問題は、これが保証されているのは、別の Java アプリケーションが重複する FileLock を取得するのを防ぐことだけだということです。他のアプリケーションがロックを取得しようとしない場合でも、ファイルを読み取ることができる可能性があります。(正確なセマンティクスはプラットフォーム固有です。)

于 2012-04-10T15:46:42.643 に答える