【发布时间】:2009-08-13 13:28:21
【问题描述】:
我需要使用 Java 读取和处理一些大文件,我想知道,是否有一些明智的方法可以保护文件在我阅读时不会被其他进程覆盖 &处理它?
也就是说,通过某种方式使其成为只读,保持“打开”之类的......
这将在 Windows 环境中完成。
br, 图子
【问题讨论】:
标签: java file-io filelock file-processing
我需要使用 Java 读取和处理一些大文件,我想知道,是否有一些明智的方法可以保护文件在我阅读时不会被其他进程覆盖 &处理它?
也就是说,通过某种方式使其成为只读,保持“打开”之类的......
这将在 Windows 环境中完成。
br, 图子
【问题讨论】:
标签: java file-io filelock file-processing
你想要一个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();
为了简单起见,我省略了一个封闭的 try/finally 块,但你不应该在你的生产代码中
【讨论】:
工作正常,遇到一些问题:as the locking doesn't seem to be totally absolute。
【讨论】: