java :根据创建日期对文件进行排序



我正在尝试根据创建日期读取最新的 10 个文件。

尝试使用此代码,但它不起作用,我的意思是,当我添加新文件时,它不会在输出中显示新文件名。

import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
    public static void main(String[] args) {
        File inboxDir = new File("D:\SPOTO");
        File[] files = inboxDir.listFiles();
        Arrays.sort( files, new Comparator()
        {
        public int compare(Object o1, Object o2) {
        return new Long(((File)o1).lastModified()).compareTo(new Long(((File) o2).lastModified()));
        }
        });

        for(int i=0;i<10;i++)
        {
            System.out.println(files[i].getName());
        }

    }
}

我什至尝试使用 apache commons io ,但这也不起作用(意味着在该目录中创建新文件时不显示新文件)

这是我的Apache commons io版本

import org.apache.commons.io.comparator.LastModifiedFileComparator;
import java.io.File;
import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        File dir = new File("c:\");
        File[] files = dir.listFiles();
        Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_COMPARATOR);
        for (int i = 0; i < files.length; i++) {
            File file = files[i];
            System.out.printf("File %s - %2$tm %2$te,%2$tY%n= ", file.getName(),
                    file.lastModified());
        }
        Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
        for (int i = 0; i < files.length; i++) {
            File file = files[i];
            System.out.printf("File %s - %2$tm %2$te,%2$tY%n= ", file.getName(),
                    file.lastModified());
        }
    }
}

尝试翻转比较顺序:

return new Long(((File)o2).lastModified()).compareTo(new Long(((File) o1).lastModified()));

这对我刚刚在本地测试有用。

至少在常规Java版本中,您以错误的(升序)顺序比较文件。我将结果乘以 -1,我首先看到最新的文件:

return -1* (new Long(((File)o1).lastModified()).compareTo(new Long(((File) o2).lastModified())));

对于时间戳,较大的时间戳对应于较新的文件。

最新更新