繁体   English   中英

如何处理JAVA WatchService Overflow事件?

[英]How to handle the JAVA WatchService Overflow event?

我想使用JAVA检测文件的创建修改 我正在使用JDK 7提供的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;
    }
}

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

有两种可能的方法可以解决这个问题:

  • 防止发生溢出
  • 如果仍然发生,请处理溢出

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

如果仍然发生,请处理溢出

如果OVERFLOW仍然出现,

  • 停止听事件
  • 清除队列
  • 在目录上调用listFiles()
  • 再次开始听事件
  • 将列出的文件插入队列中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM