我需要使用Java读取和处理一些较大的文件,我想知道是否有一种明智的方法来保护该文件,使其在我读取和处理时不会被其他进程覆盖?
也就是说,有一种方法可以将其设置为只读,保持“打开”状态或其他方式...
这将在Windows环境下完成。
敬礼, Touko
我需要使用Java读取和处理一些较大的文件,我想知道是否有一种明智的方法来保护该文件,使其在我读取和处理时不会被其他进程覆盖?
也就是说,有一种方法可以将其设置为只读,保持“打开”状态或其他方式...
这将在Windows环境下完成。
敬礼, Touko
你需要一个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块的封闭块,但你在生产代码中不应该这样做。