[英]How to fire an event when a file is not been modified using Java WatchService?
每當文件停止被修改時,我都想觸發一個事件。 我正在輪詢目錄,如果文件名匹配“ input.csv”,那么我想在該文件上觸發事件。 檢查文件是否已修改的時間為10秒。 沒有事件發生時,我得到一個空指針異常。 這是我的示例代碼:
public class MyPoller {
public static void main(String[] args) throws URISyntaxException,
IOException, InterruptedException {
Path tmpPath = Paths.get("E:/MyDirectory/DEC");
WatchService watchService = FileSystems.getDefault().newWatchService();
// Watching the E:/MyDirectory/DEC directory
// for MODIFY and DELETE operations
tmpPath.register(watcput.csvService, StandardWatchEventKinds.ENTRY_MODIFY,
StandardWatchEventKinds.ENTRY_DELETE);
for (;;) {
WatchKey key = watchService.poll(10000,TimeUnit.MILLISECONDS);
List<WatchEvent<?>> events = key.pollEvents();
// Poll all the events queued for the key
for (WatchEvent event : events) {
switch (event.context().toString()) {
case "input.csv":
System.out.println("Modified: " + event.context());
String filename = "" + event.context();
System.out.println(" "+filename);
break;
default:
break;
}
}
boolean valid = key.reset();
// If the key is invalid, just exit.
if (!valid) {
break;
}
}
}
}
如果未生成任何事件,則WatchKey可能為null
WatchKey key = watchService.poll(10000,TimeUnit.MILLISECONDS);
嘗試對鍵進行null
檢查,如果確實不為null
,則繼續執行pollEvents()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.