Ubuntu Java watchservice 坏了

Ubuntu Java watchservice is broken

这是我使用监视器更改文件夹的代码:

    WatchService watcher = FileSystems.getDefault().newWatchService();
    Path dir = Paths.get("/home/user/test/");

    dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);

    System.out.println("Begin monitor to test folder: ");

    for (;;) {

        // wait for key to be signaled
        WatchKey key;
        try {
            key = watcher.take();
        } catch (InterruptedException x) {
            return;
        }

        for (WatchEvent<?> event: key.pollEvents()) {
            WatchEvent.Kind<?> kind = event.kind();

            // The filename is the
            // context of the event.
            @SuppressWarnings("unchecked")
            WatchEvent<Path> ev = (WatchEvent<Path>)event;
            Path filename = ev.context();

            if (filename.toString().startsWith(".")) continue;

            if (kind == OVERFLOW) {
                continue;
            } else if (kind == ENTRY_CREATE) {
                System.out.println(kind.name() + ":" +filename);
            } else if (kind == ENTRY_DELETE) {
                System.out.println(kind.name() + ":" +filename);
            } else if (kind == ENTRY_MODIFY) {
                System.out.println(kind.name() + ":" +filename);
            }

        }

        boolean valid = key.reset();
        if (!valid) {
            break;
        }
    }

在windows上很好,Mac os,但是当运行在ubuntu 16.04上时,我要面对的问题是: 对于监视文件夹中的现有文件:当我编辑文件时,我收到创建事件,而我想获得修改事件
请帮帮我

谢谢

确保您在 Ubuntu 中用于编辑文件的程序不会创建隐藏文件。一些编辑器这样做是为了确保在程序崩溃时不会丢失任何更改。

因此,请确保您的编辑器在您编辑文件时不会创建隐藏文件,并且如果它确实使用其他程序或处理隐藏文件 "subfile"。