Java:监视目录以移动大文件

11 浏览
0 Comments

Java:监视目录以移动大文件

我一直在编写一个程序,它监视一个目录,当文件在其中创建时,会更改文件名并将其移动到一个新目录。在我第一次实现时,我使用了Java的Watch Service API,在测试1kb文件时工作正常。问题出现在实际情况中,创建的文件大小在50-300mb之间。当这种情况发生时,监视API会立即找到文件,但无法移动它,因为文件仍在写入中。我尝试将监视器放入循环中(直到文件可以移动时生成异常),但这似乎效率很低。

既然这样不起作用,我尝试使用一个定时器,每10秒检查一次文件夹,然后在可以移动文件时进行移动。这是我最终采用的方法。

问题:有没有办法在文件写入完成时发出信号,而不是进行异常检查或不断比较文件大小?我喜欢只使用一次Watcher API来监视每个文件,而不是使用定时器不断检查(并遇到异常)。

非常感谢所有的回复!

0