2016-08-22 104 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()
      • 再次開始收聽活動
      • 將列出的文件插入隊列中