什么是该命令Files.walkFileTree
访问文件/目录处于同一水平?
它不会出现看望他们按大小顺序,最后修改时间或名称。 我找不到任何东西的API文档,无论是。
也许preVisitDirectory
可以使用的方法来访问指定的顺序,但什么是默认的行为?
什么是该命令Files.walkFileTree
访问文件/目录处于同一水平?
它不会出现看望他们按大小顺序,最后修改时间或名称。 我找不到任何东西的API文档,无论是。
也许preVisitDirectory
可以使用的方法来访问指定的顺序,但什么是默认的行为?
在其中读出子目录没有被定义为每在此评论的顺序Java教程 :
文件树是第一次走进深度,但你不能对迭代顺序的子目录被访问的任何假设。
至于在这些文件的读取次序,这取决于(当前实现)所提供的DirectoryStream
,这是sun.nio.fs.WindowsDirectoryStream
我的电脑上。 阅读的javadoc的DirectoryStream
,你会看到:
迭代器返回的元素没有特定的顺序。
Java可以稍后为您挑选吧,这里是我做的。
public static void printy(Path rootDirPath) {
//treesets to hold paths alphabetically
TreeSet<Path> paths = new TreeSet<>();
try {
Files.walkFileTree(rootDirPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
paths.add(dir);
return super.preVisitDirectory(rootDirPath, attrs);
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
paths.add(file);
return super.visitFile(rootDirPath, attrs);
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return super.visitFileFailed(file, exc);
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
return super.postVisitDirectory(rootDirPath, exc);
}
});
//I'm printing the contents alphabetically,.. your impl might vary
paths.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
希望这可以帮助