2012-04-10 3 views
0

私のプログラムでは、私の入力テキストファイルをロックしたいので、次のプログラムの出現が同じファイルで実行されるとクラッシュします(例外がスローされます)。 私は "java.nio.channels.FileLock"でファイルをロックすることができますが、ファイルが書き込み用に開かれている場合にのみ可能で、読み取り専用にテキストファイルを開きます。私はあまりにも遅く、ファイルサイズが非常に大きい(10GB)ので、ファイルを読むために "RandomAccessFile"を使用したくありません。私はこれはテキストファイルを読み込むための高速な方法だと思いロックするには、テキストファイルを開いて読み込みますか?

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

: は今、私は私のファイルを読み取るため、このWYを使用しています。テキスト入力ファイルをロックする方法は?

+1

このスレッドを見てください。 http://stackoverflow.com/questions/128038/how-can-i-lock-a-file-using-java-if-posable – Arash

+0

解決に感謝します。 – PapaSmurf

+0

この[link] [1]で解決策を見つけました。 [1]:http://stackoverflow.com/questions/128038/how-can-i-lock-a-file-using-java-if-possible – PapaSmurf

答えて

0

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

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

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

関連する問題