我制作了以下程序,该程序读取目录中的所有文件。 所有文件名都由数字组成(例如10023134.txt)。
File dir = new File(directoryPath);
File[] files = dir.listFiles();
for (File file : files)
try {
if ( !file.exists())
continue;
else if (file.isFile()) {
// some process
}
} catch (Exception e) {}
我想知道默认情况下读取目录中文件的顺序。
程序似乎既不按数字顺序也不按创建日期顺序读取文件。
答案 0 :(得分:6)
正如JavaDoc:
中所述无法保证结果数组中的名称字符串 将以任何特定顺序出现;特别是,它们不是 保证按字母顺序出现。
如果你想要它们排序,你必须自己排序。
请注意,如果您使用默认排序进行排序,则根据您的操作系统,您仍会获得不同的结果。再次来自JavaDoc:
此方法定义的排序取决于底层证券 系统。在UNIX系统上,字母大小写在比较中很重要 路径名;在Microsoft Windows系统上它不是。
答案 1 :(得分:5)
文件的顺序可能是操作系统默认(或列出中性)顺序,并且取决于操作系统如何将文件列表返回给Java。
无法保证文件可能会被退回。
您可以在阅读后使用Arrays.sort(T[] Comparator<? super T> c)
对列表进行排序。
答案 2 :(得分:3)
文件按操作系统的自然顺序排序。它可能是创建顺序。 如果要对列表进行排序,可以调用
File[] files = Arrays.sort(dir.listFiles())
对于其他排序顺序,请随意使用您自己的Comparator
。
问候。