2

我需要对目录中新引入的文件进行一些 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

谢谢你的帮助。

格尔德

4

2 回答 2

1

将文件复制到不同的目录中;完成后,将其移动到监视目录。

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

观察者将看到一个 CREATE 事件

于 2013-01-17T20:10:20.340 回答
0

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

您的观察者将查找具有此扩展名的文件,将其删除以获取原始文件名,然后启动 Zip 操作。

另一种选择可能是您的复制操作会写入一个扩展名与您查找的文件不同的文件。完成后,它会重命名文件以赋予其正确的扩展名。

于 2013-01-17T19:52:34.713 回答