首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我不明白listFiles()返回的文件数组的顺序

我不明白listFiles()返回的文件数组的顺序
EN

Stack Overflow用户
提问于 2012-04-05 06:15:38
回答 1查看 741关注 0票数 3

因此,我有一个ListView,它显示某个目录中所有文件的名称。此应用程序还删除文件并将新文件添加到目录中。

我希望按照文件(目录).listFiles()的创建顺序显示这些文件,但这并不总是正确的。如果我从一个空目录开始并开始添加文件,那么最新的文件将位于数组的0位置,并上升到最老的位置。但是,如果我删除任何文件,然后添加新的文件,事情就会变得奇怪。举个例子..。

假设我从一个空目录开始,并向其中添加了四个文件。listFiles()返回的数组将是:

位置0=文件#4 (第四个待添加)

P1=档案#3

P2=档案#2

P3=档案#1

然后,我将删除文件#2和#3。

P0=档案#4

P1=档案#1

到现在为止还好。现在,我将添加两个新文件。我希望listFiles()返回的新数组是:

P0=档案#6

P1=档案#5

P2=档案#4

P3=档案#1

然而,实际上是这样的:

P0=档案#4

P1=档案#6

P2=档案#5

P3=档案#1

但是,如果我随后添加了一个文件#7,新的数组将是:

P_0=档案#7

P1=档案#4

P2=档案#6

P3=档案#5

P4=档案#1

基本上,如果删除了任何文件,那么新文件将在数组中填充它们的“旧位置”。所有“旧职位”必须在任何新文件进入0位置之前填写。有人能解释一下这种行为吗?此外,是否有一种快速和简单的方法来重新排序文件数组到我想要的时间顺序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-05 06:20:55

获取文件列表将使用File.listFiles(),文档声明这不能保证返回的文件的顺序。因此,您需要编写一个使用比较器File.lastModified(),并将其连同文件数组传递给Arrays.sort()

代码:

代码语言:javascript
复制
File[] files = directory.listFiles();

Arrays.sort(files, new Comparator<File>(){
    public int compare(File f1, File f2)
    {
        return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
    } });

试试这个让我知道发生了什么..。

编辑:

您可能还会看到apache commons IO,它有内置的最后一次修正比较器和许多其他用于处理文件的实用程序。

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

https://stackoverflow.com/questions/10023522

复制
相关文章

相似问题

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