使用此代码时,目录观看工作正常,但只有当修改的文件日期改变至少一分钟时才会更新,这对我来说还不够快,如果我在文件夹中垃圾邮件f5来刷新它,代码看到所有的变化 - 几乎是即时的,我希望观察者在没有任何用户输入的情况下做到这一点,我可能有它,也许它有文件大小监视(但我没有找到检查大小的条目)?因为字节大小更具体,而不是一分钟的时间核对标记,所以我对其他想法开放
public class DirectoryWatchDemo {
public static void main(String[] args) {
try {
WatchService watcher = FileSystems.getDefault().newWatchService();
Path dir = Paths.get("C:\\Program Files (x86)\\logs");
dir.register(watcher, new WatchEvent.Kind[]{StandardWatchEventKinds.ENTRY_MODIFY}, SensitivityWatchEventModifier.HIGH);
System.out.println("Watch Service registered for dir: " + dir.getFileName());
while (true) {
WatchKey key;
try {
key = watcher.take();
} catch (InterruptedException ex) {
return;
}
for (WatchEvent<?> event : key.pollEvents()) {
WatchEvent.Kind<?> kind = event.kind();
@SuppressWarnings("unchecked")
WatchEvent<Path> ev = (WatchEvent<Path>) event;
Path fileName = ev.context();
System.out.println(kind.name() + ": " + fileName);
if (kind == ENTRY_MODIFY &&
fileName.toString().equals("console.log")) {
System.out.println("My source file has changed!!!");
}
}
boolean valid = key.reset();
if (!valid) {
break;
}
}
} catch (IOException ex) {
System.err.println(ex);
}
}
}
答案 0 :(得分:0)
在错误阅读问题后被作者删除