我有一个简单的问题:我使用Files.walkFileTree迭代一个大而深度嵌套的目录结构,如下所示:
final int CUTOFF = 5;
final List foundList = new ArrayList<>();
Files.walkFileTree( codeRoot, new SimpleFileVisitor() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
throws IOException {
String rPath = codeRoot.relativize( dir ).toString();
int level = rPath.length() - rPath.replace("/", "").length();
if (dir.getFileName().toString().equals( "target" ) || level < CUTOFF) {
return FileVisitResult.CONTINUE;
}
return FileVisitResult.SKIP_SUBTREE;
}
@Override
public FileVisitResult visitFile( Path file, BasicFileAttributes attrs )
throws IOException {
if (file.getFileName().toString().endsWith( ".txt" )) {
foundList.add( file );
}
return FileVisitResult.CONTINUE;
}
} );
我的目标是在特定的目录目标下添加所有文件,我知道这些目标在codeRoot下最多是CUTOFF级别.
我正在寻找一种更有效的方法来完成必要的stat()调用或者说“无法完成”的人.
语言级别是Java8.