因此,我必须使用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;
}
}
} 任何见解或帮助都将非常感谢,谢谢。
发布于 2015-10-18 00:16:35
使用目录流似乎更快更容易地工作。
发布于 2016-08-31 09:52:57
使用允许设置maxDepth的较长版本的walkFileTree方法,如下所示:
Files.walkFileTree(Paths.get(ROOT), EnumSet.noneOf(FileVisitOption.class),
1, fileProcessor);注意,与更简单的情况不同,根目录的子目录将生成对visitFile的调用。通常,maxDepth级的子目录会生成对visitFile的调用,但不会生成对preVisitDirectory和postVisitDirectory的调用。
https://stackoverflow.com/questions/33188369
复制相似问题