Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java:根据创建日期对文件进行排序_Java - Fatal编程技术网

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

java:根据创建日期对文件进行排序,java,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:\\SPO

我正在尝试根据创建日期读取最新的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());
        }


    }
}
导入java.io.File;
导入java.util.array;
导入java.util.Comparator;
公共班机{
公共静态void main(字符串[]args){
File inboxDir=新文件(“D:\\SPOTO”);
File[]files=inboxDir.listFiles();
Arrays.sort(文件,新的Comparator()
{
公共整数比较(对象o1、对象o2){
返回new Long(((文件)o1.lastModified()).compareTo(new Long((文件)o2.lastModified());
}
});

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

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

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

尝试翻转比较顺序:

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

这对我刚刚进行的本地测试有效。

您确定“D:\\SPOTO”中有文件吗?listfiles()不会递归遍历子目录。正确进行比较似乎比乘法更清晰:/n这是最快的尝试方法。Comparator要求返回整数。
return new Long(((File)o2).lastModified()).compareTo(new Long(((File) o1).lastModified()));