![](/img/trans.png)
[英]How to use Java's directory stream to get files/subdirectories only within directory not other subdirectories
[英]Using Java's file tree system to get only files and folders not subdirectories
因此,我必须使用Java文件树系统,因为由于某种原因,.listfiles文件通过远程网络的运行速度非常慢。 但是,所有Java文件树系统示例均列出了子目录中的所有文件,从而严重降低了程序速度。 我如何做到这一点,使其仅搜索目录并仅返回该目录中的子目录,而不返回子目录中的文件夹和文件的名称。
样例代码:
package javaapplication6;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
/** Recursive listing with SimpleFileVisitor in JDK 7. */
public final class JavaApplication6 {
public static void main(String... aArgs) throws IOException{
String ROOT = "\\\\directory";
FileVisitor<Path> fileProcessor = new ProcessFile();
Files.walkFileTree(Paths.get(ROOT), fileProcessor);
}
private static final class ProcessFile extends SimpleFileVisitor<Path> {
@Override public FileVisitResult visitFile(
Path aFile, BasicFileAttributes aAttrs
) throws IOException {
System.out.println("Processing file:" + aFile);
return FileVisitResult.CONTINUE;
}
@Override public FileVisitResult preVisitDirectory(
Path aDir, BasicFileAttributes aAttrs
) throws IOException {
System.out.println("Processing directory:" + aDir);
return FileVisitResult.CONTINUE;
}
}
}
感谢您的任何见解或帮助。
使用目录流似乎可以更快,更轻松地工作。
使用walkFileTree
方法的较长版本,该方法允许您像这样设置maxDepth
:
Files.walkFileTree(Paths.get(ROOT), EnumSet.noneOf(FileVisitOption.class),
1, fileProcessor);
请注意,与简单情况不同,ROOT的子目录将生成对visitFile
调用。 通常,在maxDepth级别的子目录生成对visitFile
调用,但不生成对preVisitDirectory
和postVisitDirectory
调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.