一尘不染

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

java

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

既然那行不通,我尝试使用计时器,该计时器每10秒检查一次文件夹,然后在可能的时候移动文件。这就是我最终想要的方法。

问题:是否在没有完成异常检查或不连续比较大小的情况下写完文件的信号?我喜欢对每个文件只使用一次Watcher
API的想法,而不是不断使用计时器检查(并遇到异常)。

非常感谢所有回复!

nt


阅读 180

收藏
2020-12-03

共1个答案

一尘不染

写入另一个文件以指示原始文件已完成。如果完成创建文件“ fileorg.done”并仅检查“ fileorg.done”,则“
fileorg.dat”会不断增长。

使用巧妙的命名约定,您应该不会有问题。

2020-12-03