Java DirectoryStream返回路径的顺序是什么?文件名,上次修改,文件大小?
我正在尝试使用DirectoryStream读取文件夹中的多个文件。一共有10项 doc_01.txt、doc_02.txt、doc_03.txt、doc_04.txt、doc_05.txt、doc_06.txt、doc_07.txt、doc_08.txt、doc_09.txt、doc_10.txt 我想按照文件名的顺序读取文件。 DirectoryStream是否按照文件名的顺序读取文件?因为这是我得到的结果: /mydata/doc_01.txt、/mydata/doc_02.txt、/mydata/doc_03.txt、/mydata/doc_04.txt、/mydata/doc_08.txt、/mydata/doc_07.txt、/mydata/doc_09.txt、/mydata/doc_10.txt、/mydata/doc_05.txt、/mydata/doc_06.txt 这是我的代码:Java DirectoryStream返回路径的顺序是什么?文件名,上次修改,文件大小?,java,directorystream,Java,Directorystream,我正在尝试使用DirectoryStream读取文件夹中的多个文件。一共有10项 doc_01.txt、doc_02.txt、doc_03.txt、doc_04.txt、doc_05.txt、doc_06.txt、doc_07.txt、doc_08.txt、doc_09.txt、doc_10.txt 我想按照文件名的顺序读取文件。 DirectoryStream是否按照文件名的顺序读取文件?因为这是我得到的结果: /mydata/doc_01.txt、/mydata/doc_02.txt、/my
public static void readData(){
Instant start = Instant.now();
System.out.println("Start reading");
Path path = Paths.get(String.join(File.separator, ".", "mydata"));
try(DirectoryStream<Path> stream =
Files.newDirectoryStream(path, "*.txt")
){
for(Path entry : stream){
System.out.println("reading: " +entry.toString());
}
}catch(IOException e){
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
}
Instant end = Instant.now();
System.out.println("Done in " + Duration.between(start, end).toString());
}
publicstaticvoidreaddata(){
即时开始=即时。现在();
System.out.println(“开始读取”);
Path Path=Path.get(String.join(File.separator,“.”,“mydata”);
try(DirectoryStream=
Files.newDirectoryStream(路径“*.txt”)
){
for(路径条目:流){
System.out.println(“读取:“+entry.toString());
}
}捕获(IOE异常){
System.err.println(“错误:+e.getMessage());
e、 printStackTrace();
}
瞬间结束=瞬间。现在();
System.out.println(“完成时间”+持续时间.between(开始、结束).toString());
}
类的javadoc
明确表示:
迭代器返回的元素没有特定的顺序。
有些文件系统维护到目录本身的特殊链接
和目录的父目录。表示这些链接的条目
迭代器不会返回
因此,如果您需要特定的顺序,则由您对路径进行排序。
例如,对于字母排序,您可以这样做:
DirectoryStream<Path> directoryStream = ...;
StreamSupport.stream(directoryStream.spliterator(), false)
.sorted(Comparator.comparing(Path::toString))
.forEach(p -> { System.out.println("reading: " + p); });
DirectoryStream DirectoryStream=。。。;
StreamSupport.stream(directoryStream.spliterator(),false)
.sorted(Comparator.comparing(路径::toString))
.forEach(p->{System.out.println(“读取:“+p”);});
类的javadoc
明确表示:
迭代器返回的元素没有特定的顺序。
有些文件系统维护到目录本身的特殊链接
和目录的父目录。表示这些链接的条目
迭代器不会返回
因此,如果您需要特定的顺序,则由您对路径进行排序。
例如,对于字母排序,您可以这样做:
DirectoryStream<Path> directoryStream = ...;
StreamSupport.stream(directoryStream.spliterator(), false)
.sorted(Comparator.comparing(Path::toString))
.forEach(p -> { System.out.println("reading: " + p); });
DirectoryStream DirectoryStream=。。。;
StreamSupport.stream(directoryStream.spliterator(),false)
.sorted(Comparator.comparing(路径::toString))
.forEach(p->{System.out.println(“读取:“+p”);});
我想我没有彻底阅读API。但这就解释了这一点。非常感谢。:)我想这个问题现在可以结束了。我想我没有彻底阅读API。但这就解释了这一点。非常感谢。:)我想这个问题现在可以结束了。