Java WatchService用于已存在目录中的文件。

3
我有一个WatchService实现,该服务使用key = watchService.poll()take()方法监视目录。但我面临的问题是,在启动poll()take()方法之前,如果我已经有一些文件存在于监视目录中,WatchService将无法跟踪这些文件。如何获取目录下的这些文件?WatchService是否提供了任何解决方案来实现此目的?还是有其他解决这个问题的方法?
谢谢!

你说的“WatchService无法跟踪这些”是什么意思?你应该收到有关更改的通知。 - Oleg
我对WatchService不是很了解,但读取目录中的所有文件很容易;https://dev59.com/PXI-5IYBdhLWcg3wc4Cw - achAmháin
@Oleg - 它在开始轮询后通知有关文件事件。我的意思是,在开始轮询之前,如果我们已经将一些文件转储到目录中,是否存在WatchService中的任何解决方案。 - Saurabh Deshpande
@notyou - 是的,这总是一个开放的选项..我想检查一下,除了为此编写不同的代码块之外,我们是否有WatchService提供的东西。 - Saurabh Deshpande
我有疑问 - 我认为主要目的是监视文件,并记录或以其他方式记录更改。我猜想在这里你需要一个单独的方法,可能只需在WatchService启动之前调用一次;我想这不会带来太大的开销。 - achAmháin
1个回答

1

在启动服务之前,您可以使用listFiles方法获取文件名,对吗?


是的,这始终是一个开放的选项...我想检查一下,除了为其编写不同的代码块之外,我们是否有WatchService提供的东西。 - Saurabh Deshpande
如果在启动WatchService之前列出和处理已经存在的文件,你可能会错过在此期间新增的文件。如果首先启动WatchService(在处理已经存在的文件之前),那么你怎么知道一个文件不会被重复处理(既被WatchService处理,也被你的处理程序处理)? - Xavier Dury

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接