簡體   English   中英

當未使用Java WatchService修改文件時,如何觸發事件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM