gpt4 book ai didi

java - 使用 Java 监视服务监视子文件夹

转载 作者:搜寻专家 更新时间:2023-10-30 21:02:02 25 4
gpt4 key购买 nike

我正在使用 watchKey 来监听特定文件夹中的文件更改。

Path _directotyToWatch = Paths.get("E:/Raja");
WatchService watcherSvc = FileSystems.getDefault().newWatchService();
WatchKey watchKey = _directotyToWatch.register(watcherSvc, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);

while (true) {
watchKey=watcherSvc.take();
for (WatchEvent<?> event: watchKey.pollEvents()) {
WatchEvent<Path> watchEvent = castEvent(event);
System.out.println(event.kind().name().toString() + " " + _directotyToWatch.resolve(watchEvent.context()));
watchKey.reset();
}
}


它对我来说很好用。如果我修改 raja 文件夹中的文件,它会给我带路径的文件名。但是,当我将一些文件放在“E:/Raja/Test”等子文件夹中时,它只会给我放置文件的路径,而不是文件名。

如何获取文件名?

最佳答案

为什么您没有在子文件夹中创建/修改文件名的原因由 Stephen C 在他的 answer 中给出。 .

这里有一个简单的例子,说明如何注册目录子目录,以便在其中观看您感兴趣的事件:

/**
* Register the given directory and all its sub-directories with the WatchService.
*/
private void registerAll(final Path start) throws IOException {
// register directory and sub-directories
Files.walkFileTree(start, new SimpleFileVisitor<Path>() {

@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
throws IOException {
dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
return FileVisitResult.CONTINUE;
}

});

}

查看官方 Java 教程:Watching a Directory for Changes .您可以在那里找到非常好的解释和示例以及源代码。

您尤其会对这个关于如何查看目录(或目录树)文件更改的示例感兴趣:WatchDir.java .

我上面提供的方法取自这个例子(为了简洁省略了一些部分)。
阅读教程了解详情。

关于java - 使用 Java 监视服务监视子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16611426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com