gpt4 book ai didi

java - 观看目录和子目录以在 java 中创建、修改和更改

转载 作者:搜寻专家 更新时间:2023-11-01 01:22:00 24 4
gpt4 key购买 nike

我在目录 C:/java/newfolder 中制作了一些用于检测更改的代码,它运行良好。我在下面给出了。

import java.nio.file.*;
import java.util.List;

public class DirectoryWatchExample {
public static void testForDirectoryChange(Path myDir){

try {
WatchService watcher = myDir.getFileSystem().newWatchService();
myDir.register(watcher, StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY);

WatchKey watckKey = watcher.take();

List<WatchEvent<?>> events = watckKey.pollEvents();
for (WatchEvent event : events) {
if (event.kind() == StandardWatchEventKinds.ENTRY_CREATE) {
System.out.println("Created: " + event.context().toString());
}
if (event.kind() == StandardWatchEventKinds.ENTRY_DELETE) {
System.out.println("Delete: " + event.context().toString());
}
if (event.kind() == StandardWatchEventKinds.ENTRY_MODIFY) {
System.out.println("Modify: " + event.context().toString());
}
}

} catch (Exception e) {
System.out.println("Error: " + e.toString());
}
}

public static void main (String[] args) {
Path myDir = Paths.get("c:/java/newfolder/");
//define a folder root
testForDirectoryChange(myDir);

}
}

现在我只看目录。但我只需要看所有子目录。

例如:c:/java/newfolder/folder1, c:/java/newfolder/folder2, c:/java/newfolder/folder3......等

我在子目录上面给出了例子

c:/java/newfolder/*..

我需要查看所有子目录给我一些解决方案吗?

最佳答案

您要做的是递归地注册 WatchService 并在后续的 ENTRY_CREATE 事件中继续注册它。 Oracle 在这里提供了一个完整的示例:http://docs.oracle.com/javase/tutorial/essential/io/examples/WatchDir.java

通常我不会发布带有单个链接的帖子,但我怀疑 Oracle 会删除一个相当基础的教程,而且答案过于冗长。不过,为了以防万一,可以通过搜索“java watchservice recursive”轻松找到示例。

关于java - 观看目录和子目录以在 java 中创建、修改和更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17850940/

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