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));  

我认为这是读取文本文件的快速方法。如何锁定我的文本输入文件?

4

1 回答 1

1

我知道我可以使用“java.nio.channels.FileLock”锁定文件,但只有在文件打开写入时才有可能,

AFAIK,这是不正确的。

您可以在已打开以供阅读的文件或文件区域上获取 FileLock。问题是,这只能保证防止另一个 Java 应用程序获取重叠的 FileLock。如果其他应用程序不尝试获取锁,那么它可能仍然能够读取文件。(确切的语义是特定于平台的。)

于 2012-04-10T15:46:42.643 回答