我正在使用Java读取多个文本文件并打印它们的目录,我想知道为什么输出没有按字母顺序排列?
代码片段(也是从互联网上得到的)
File dir = new File("/home/dilapitan/Desktop/xml-parsing/files/");
File[] listOfFiles = dir.listFiles();
for (File path : listOfFiles) {
System.out.println(path);
}输出:
dilapitan@NT071855:~/Desktop/xml-parsing$ java Multiple
/home/dilapitan/Desktop/xml-parsing/files/c.txt
/home/dilapitan/Desktop/xml-parsing/files/b.txt
/home/dilapitan/Desktop/xml-parsing/files/a.txt
dilapitan@NT071855:~/Desktop/xml-parsing$ 我可以这样做,输出是:
a.txt
b.txt
c.txt提前谢谢你!
发布于 2017-07-04 08:21:05
不能保证结果数组中的名称字符串将以任何特定的顺序出现;它们尤其不能保证按字母顺序显示。
如果你想按特定的顺序打印,你必须自己打印。Java 8流使您可以很好地组合从修补程序中提取文件名并在一个语句中对它们进行排序:
Arrays.stream(listOfFiles)
.map(File::getName)
.sorted()
.forEach(System.out::println);发布于 2017-07-04 08:33:28
只是另一种方式,但使用java8的力量
List<Path> x = Files.list(Paths.get("C:\\myPath\\Tools"))
.filter(p -> Files.exists(p))
.map(s -> s.getFileName())
.sorted()
.collect(Collectors.toList());
x.forEach(System.out::println);甚至更好
List<Path> x = Files.list(Paths.get("C:\\Users\\myPath\\Tools"))
.filter(Files::exists)
.map(Path::getFileName)
.sorted()
.collect(Collectors.toList());
x.forEach(System.out::println);发布于 2017-07-05 08:13:09
感谢那些回答的人。我想到了一个非常简单的解决方案:
File dir = new File("/home/dilapitan/Desktop/xml-parsing/files/");
File[] listOfFiles = dir.listFiles();
Arrays.sort(listOfFiles);
for (File path : listOfFiles) {
System.out.println(path);
}哈哈哈,我向大家道歉。
https://stackoverflow.com/questions/44900492
复制相似问题