我目前有一个通过网络监控远程文件夹的java程序。如果添加或删除文件,则会使用此信息填充日志。
如果与文件夹的连接断开并重新连接,显示器将照常恢复。
但是,我发现的一个错误是,如果连接断开,文件被添加到文件夹,并且连接重新建立,则监视器不会填充日志以反映已添加此文件。如果将其删除,则日志仍会相应更新。
我使用WatchService和WatchKey来监视文件夹,我相信这是发生错误的地方。即使添加了文件,重新连接时Key值仍为null。无论如何在重新连接时分配除null之外的值以确保发现任何新文件?
WatchService service = fs.newWatchService();
//Need an assignment other than service.poll()
WatchKey key = service.poll(POLLING_INTERVAL , TimeUnit.SECONDS);
populateLog("KEY: "+key);//Debuging
// Dequeuing events
if(key!=null){ Populate logs...