繁体   English   中英

JAVA NIO Watcher:如何检测持久(复制)操作的结束?

[英]JAVA NIO Watcher: How to detect end of a long lasting (copy) operation?

我需要对目录中新引入的文件进行一些ZIP操作。 在那里,我为CREATE事件订阅了事件,该事件被触发了。 复制到该目录需要花费一些时间。

因此,访问文件时,我得到“被另一个进程锁定”的ACCESS_DENIED。

NIO是否提供诸如“ LOCK Released”之类的东西,或者我需要以某种方式轮询文件才能释放该锁? 如此处所述:http://stackoverflow.com/questions/750471/how-to-know-whether-a-file-copying-is-in-progress-complete-in-java-1-6

谢谢你的帮助。

格尔德

将文件复制到另一个目录中; 完成后,将其移至监视目录。

java.nio.file.Files.move(srcFile, targetFile, StandardCopyOption.ATOMIC_MOVE);

观察者将看到一个CREATE事件

修改复制操作,以便在写入第一个较大的文件之后,将另一个较小的文件写入同一目录。 文件名可以是原始文件的名称,加上扩展名。

您的观察者将查找具有此扩展名的文件,将其砍掉以获取原始文件名,然后启动Zip-action。

另一种选择可能是您的复制操作将写一个扩展名不是您要查找的扩展名的文件。 完成后,它将重命名文件以为其提供正确的扩展名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM