Java listFiles()默认读取目录中的文件的顺序是什么?

Ben*_*ben 2 java java-io

我制作了以下程序,它读取目录中的所有文件.所有文件名都由数字组成(例如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) {}
Run Code Online (Sandbox Code Playgroud)

我想知道默认情况下读取目录中文件的顺序.

似乎程序既不按数字顺序也不按创建日期顺序读取文件.

Rob*_*sen 6

JavaDoc中所指定:

无法保证结果数组中的名称字符串将以任何特定顺序出现; 特别是,它们不保证按字母顺序出现.

如果你想要它们排序,你将不得不自己排序.

请注意,如果使用默认排序进行排序,则根据您的操作系统,您仍会获得不同的结果.再次来自JavaDoc:

此方法定义的排序取决于底层系统.在UNIX系统上,字母大小写在比较路径名时很重要; 在Microsoft Windows系统上它不是.


Mad*_*mer 5

文件的顺序可能是操作系统默认(或列出中性)顺序,并且取决于操作系统如何将文件列表返回给Java.

无法保证可以返回文件的顺序.

您可以Arrays.sort(T[] Comparator<? super T> c)在阅读后对列表进行排序.