Android 我不知道';无法理解listFiles()返回的文件数组的顺序

Android 我不知道';无法理解listFiles()返回的文件数组的顺序,android,Android,因此,我有一个ListView,它显示某个目录中所有文件的名称。此应用程序还删除文件并将新文件添加到目录中 我希望文件按创建顺序显示,但对于File(directory).listFiles(),情况并非总是如此。如果我从一个空目录开始添加文件,那么最新的文件将位于数组的位置0,并按最旧的顺序递增。然而,如果我删除任何文件,然后添加新文件,事情就会变得奇怪。这里有一个例子 想象一下,我从一个空目录开始,向其中添加了四个文件。listFiles()返回的数组将是: 位置0=文件4(添加第四个) P

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

我希望文件按创建顺序显示,但对于File(directory).listFiles(),情况并非总是如此。如果我从一个空目录开始添加文件,那么最新的文件将位于数组的位置0,并按最旧的顺序递增。然而,如果我删除任何文件,然后添加新文件,事情就会变得奇怪。这里有一个例子

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

位置0=文件4(添加第四个)
P 1=文件#3
P 2=文件#2
p3=文件#1

然后,我将删除文件2和3。阵列是:

p 0=文件#4
P 1=文件#1

到目前为止,一切顺利。现在,我将添加两个新文件。我希望listFiles()返回的新数组为:

p 0=文件#6
P 1=文件#5
p2=文件4
p3=文件#1

然而,实际上是这样的:

p 0=文件#4
P1=文件#6
P2=文件#5
p3=文件#1

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

p 0=文件#7
p1=文件4
P2=文件#6
p3=文件#5
p4=文件#1


基本上,如果删除任何文件,则新文件将填充其在数组中的“旧位置”。必须先填写所有“旧位置”,然后才能将任何新文件转到位置0。有人能解释这种行为吗?另外,是否有一种快速简便的方法可以将文件数组重新排序为所需的时间顺序?

获取要使用的文件列表,并且文档中指出,这不保证返回文件的顺序。因此,您需要编写一个使用并将其与文件数组一起传递给

代码:

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());
    } });
File[]files=directory.listFiles();
Arrays.sort(文件,新的Comparator(){
公共整数比较(文件f1、文件f2)
{
返回Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
} });
试试这个,让我知道发生了什么

编辑:

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());
    } });

你也可以看看,它有一个内置的和许多其他很好的实用程序来处理文件。

@osweetman-你可以接受这个答案。如果它解决了你的问题。。这对您和其他用户也很有用..我能够用以下代码修复我的问题:files=newfile(directory).listFiles();数组。排序(文件);因为我所有的文件都是以创建日期/时间命名的,所以似乎我甚至不需要使用Comparator或File.lastModified()。现在这又快又简单!