首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认情况下,Java listFiles()会按哪个顺序读取目录中的文件?

默认情况下,Java listFiles()会按哪个顺序读取目录中的文件?
EN

Stack Overflow用户
提问于 2014-06-30 06:49:08
回答 3查看 1.4K关注 0票数 2

我做了下面的程序,它读取目录中的所有文件。所有文件名都由数字组成(例如,10023134.txt)。

代码语言:javascript
复制
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) {}

我想知道默认情况下,目录中的文件是按什么顺序读取的。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-30 06:52:31

JavaDoc中所指定的

不能保证结果数组中的名称字符串将以任何特定的顺序出现;它们尤其不能保证按字母顺序显示。

如果你想把它们分类,你就得自己分类。

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

此方法定义的排序取决于基础系统。在UNIX系统上,字母大小写在比较路径名方面很重要;而在Microsoft系统上则不是。

票数 6
EN

Stack Overflow用户

发布于 2014-06-30 06:52:00

在OS默认情况下,文件的顺序很可能是(或列表中立的)顺序,这取决于操作系统如何将文件列表返回给Java。

无法保证文件可以按顺序返回。

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

票数 5
EN

Stack Overflow用户

发布于 2014-06-30 06:57:04

这些文件按照操作系统的自然顺序排序。这可能是创造秩序。如果希望对列表进行排序,可以调用

代码语言:javascript
复制
File[] files = Arrays.sort(dir.listFiles())

对于另一种顺序,请随意使用您自己的Comparator。致以问候。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24484361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档