2009-08-13 49 views
4

我需要阅读和处理与Java有点大的文件,我想知道,如果有一些明智的方法来保护文件,它不会被其他进程覆盖,而我正在阅读&处理它?如何防止用Java读取和处理文件时被覆盖的文件?

也就是说,一些方法,使之只读,保持它的“打开”或东西...

这将在Windows环境下进行。

BR, Touko

回答

10

你想FileLock

FileChannel channel = new RandomAccessFile("C:\\foo", "rw").getChannel(); 

// Try acquiring the lock without blocking. This method returns 
// null or throws an exception if the file is already locked. 
FileLock lock = channel.tryLock(); 

// ... 

// release it 
lock.release(); 

为了简单起见,我省略了enclosng try/finally块,但你不应该在你的产品代码

+0

谢谢,看起来不错;必须尝试! – Touko 2009-08-13 13:37:29

+0

嗨,仍然有一些方法来防止文件被编辑? 如果我在Windows下获得独占锁并使用文本编辑器(例如Scite)打开它,它会打开空内容,但如果我写了一些内容并保存,文件最终会最终清空? 相反,如果我尝试用Eclipse打开它,它会告诉我该文件无法打开,因为它被另一个进程锁定了... 这可能最终归结为Windows,但有人有一些想法? – Touko 2009-08-14 07:17:27