我正在使用glob模式以递归方式遍历目录并获取该目录中的所有文件和目录。
我有一个目录:d:/ test / newfolder / ... 在newfolder中有一些文件和一些内部包含一些文件的目录。 例如:d:/test/newfolder/new.txt,d:/test/newfolder/temp/tempfile.doc等..
我正在使用Path Mathcher来匹配globpatterns。
这是我的代码:
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:" + pattern);
try {
Files.walkFileTree(startDir, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir,BasicFileAttributes attrs) throws IOException {
if (matcher.matches(file.getFileName())) {
System.out.println("found files&directories: " + file.getFileName());
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (matcher.matches(file.getFileName())) {
System.out.println("found files: " + file.getFileName());
}
return FileVisitResult.CONTINUE;
}
});
} catch (IOException e) {
e.printStackTrace();
}
如果我想搜索文件,我可以给出模式glob:* .txt,它可以正常工作。
但我不知道应该给搜索目录的模式。我想获取“newfolder”目录中的所有文件和目录。
我正在尝试使用glob:newfolder / **,但这对我不起作用。
代码有什么问题吗?
请帮帮我。 在此先感谢