暂停WatchService WatchKey Java

时间:2013-01-02 00:09:53

标签: java file watchservice

我有2个文件夹,每个文件夹我使用相同的WatchService注册了一个WatchKey ... 当我在一个文件夹中更改某些内容时,显然会有一个WatchEvent。 但是当我有一个事件时,我想在另一个文件夹中更改某些内容,而不会为另一个文件夹获取另一个事件。因为这会导致无限循环:(

我这样的代码无法正常运行:

while (true) {
        try {
            key = watcher.take();
            keypath = (Path) key.watchable();
            list = key.pollEvents();
            for (WatchEvent<?> e : list) {
                if (e.kind() == OVERFLOW) {
                    System.err.println("OVERFLOW!");
                    break;
                } else {
                    file = new File(keypath.toString() + "\\" + e.context().toString());
                    System.out.println("FileChange detected: \"" + file + "\" [" + e.kind() + "]");
                    WatchKey other = getKey(getOtherFile(file));
                    other.cancel();
                    new Thread(new WatcherSync(this, file, sync)).start();
                    registerWatchKey((Path)other.watchable());
                }
            }
            if (!key.reset()) {
                System.err.println("Reset failed for WatchKey: " + keypath);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

0 个答案:

没有答案