2012-04-10 28 views
0

我想在我的程序中鎖定我的輸入文本文件,所以如果下一次出現的程序在同一個文件上運行,它會崩潰(拋出異常)。 我知道我可以使用「java.nio.channels.FileLock」鎖定文件,但只有在文件打開才能寫入時纔有可能,並且我只打開文本文件以便讀取。我不想使用「RandomAccessFile」讀取文件,因爲速度太慢,文件大小很大(10GB)。 現在我用這個WY閱讀我的文件:如何鎖定文本文件以便閱讀?

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

我認爲這是讀取文本文件快速的方式。如何鎖定我的文本輸入文件?

+1

看看這個主題。 http://stackoverflow.com/questions/128038/how-can-i-lock-a-file-using-java-if-possible – Arash 2012-04-10 15:45:24

+0

感謝您的解決方案。 – PapaSmurf 2012-12-04 11:35:35

+0

我在這個[link] [1]找到了解決方案。 [1]:http://stackoverflow.com/questions/128038/how-can-i-lock-a-file-using-java-if-possible – PapaSmurf 2012-12-04 11:37:55

回答

0

我知道,我可以鎖定文件,「java.nio.channels.FileLock中」,但它可能只有在打開文件進行寫入,

AFAIK,這是不正確。

您可以在文件或文件的某個區域上獲取FileLock,該文件已打開供您閱讀。問題在於,這隻能保證阻止另一個Java應用程序獲取重疊的FileLock。如果其他應用程序不嘗試獲取該鎖,則它可以可以無論如何都能夠讀取該文件。 (確切的語義是平臺特定的。)