我有一个目录,我需要从中读取txt文件。
以下是代码:
try {
File dir = new File(directoryName);
File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
});
for (File xmlfile : files) {
System.out.println("File name:" + xmlfile.getAbsolutePath());
}
} catch (Exception e) {
System.out.println(e);
}
因此创建了一个测试用例:
1.名为" content"的目录。创建了。它填充了两个文件:1.txt和2.txt。这些是按照与提到的顺序相同的顺序创建的
2.其中一个文件1.txt被重命名为sriram.txt(比如说)。
以下是我得到的结果:
1.在Windows上,文件始终按字母顺序列出
2.在Linux上,文件按时间戳列出。在Ubuntu上,文件以时间戳的相反顺序列出。在其他基于Debian的发行版上,文件按时间戳的升序列出。
我的问题:
1. Java如何在内部工作以列出文件? listFiles
和FilenameFilter
的文档不清楚。
2.从上面的测试案例中可以看出,在列出文件时,Java正在寻找特定于操作系统的东西。这是什么以及如何显示它?
答案 0 :(得分:7)
The documentation绝对清楚:
无法保证结果数组中的名称字符串将以任何特定顺序出现;特别是,它们不会保证按字母顺序出现。
(在大多数情况下,当您需要以给定顺序显示文件名时,您通常也需要实施其他订单,因此实际上您不必通过手动对列表进行排序而损失太多。 )
答案 1 :(得分:0)
您不能依赖任何系统上的任何订单。如果您在订单中需要它们,则需要对它们进行排序。