我的问题是:我正在使用 aWatchService
来获取有关特定文件夹中新文件的通知,现在如果文件在所述文件夹中被移动/复制或创建,则会触发事件并返回新文件的名称。现在的问题是,如果我尝试访问该文件并且它还没有完全存在(例如,副本仍在进行中),则会引发异常。我试图做这样的事情:
RandomAccessFile raf = new RandomAccessFile(fileName, "rw");
FileChannel fc = raf.getChannel();
FileLock lck = fc.lock();
但是即使获得了锁,如果我尝试写入文件,有时仍然会引发异常,因为另一个进程仍然有一个打开的句柄。
现在,如何才能锁定 Java 中的文件以实现真正的独占访问?