2016-08-22 90 views
3

我想检测创建修改使用JAVA的文件。我使用JDK 7如何处理JAVA WatchService溢出事件?

提供的WatchService API所以,当有在给定的实例中的多个文件的创建有手表服务可以处理的水平,然后生成并OVERFLOW事件。

示例代码部分如下。

当出现溢出事件并检测到所有文件的创建时,处理这种情况的最合适方法是什么?

for (WatchEvent<?> event : key.pollEvents()) { 
    WatchEvent.Kind kind = event.kind(); 
    // TBD - provide example of how OVERFLOW event is handled 
    if (kind == OVERFLOW) { 
     System.err.println("OVERFLOW !"); 
     continue; 
    } 
} 

回答

1

希望你已经找到了解决方案。通常这个想法是处理新创建的文件并将处理后的文件移动到不同的目录。

有两个可能的选项来处理这样的:

发生
  • 处理溢出,如果仍然发生
  • 防止溢出它的发生 的想法是

    • 防止溢出快速清除操作系统缓冲区并使用事件信息填充队列,然后让多个线程处理队列中的事件。

      处理溢出,如果如果溢出仍然存在仍然发生

      它,

      • 站上的目录
      • 监听事件
      • 明确队列
      • 调用listFiles()
      • 再次开始收听活动
      • 将列出的文件插入队列中