簡體   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