当前位置: 首页 > 面试题库 >

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

湛功
2023-03-14
问题内容

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

这对我来说仅适用于本地测试。



 类似资料:
  • 问题内容: 我试图根据键中的日期对此HashMap进行排序 我的哈希图: 问题答案: 使用代替。正如已经实现的那样,它将在插入时自动排序。 或者,如果您有一个现有的并且想要基于它创建一个,则将其传递给构造函数: 也可以看看: Java教程-地图实现 Java教程-对象排序

  • 边走边学Java(Python背景)。简单的单词计数程序在Java7代码(不能用J8!)。 我有一个单词的哈希图:计数对。现在我需要按计数(递减顺序)排序,并打破按字母顺序使用word的联系。 我正在寻找对这个想法的反馈: 遍历HashMap中的映射项(me) 使用me.getkey=K和me.getvalue=v new map.entry reverse_me=(V,K){不确定此语法} 将r

  • 问题内容: 我有下表的人和他们的生日: 而且我不知道如何根据生日离今天有多近来对名字进行排序。因此,对于NOW()= 2011-09-08,排序结果应为: 我正在寻找一个快速的技巧,并不真正在意性能(宠物项目-表将容纳少于1000条记录),但是当然每个建议都会受到赞赏。 问题答案: 这是一种方法: 计算 当前年份 - 出生年份 将得出的年数加上 出生日期 您现在有今年的生日,如果这个日期过去了,再

  • 问题内容: 我正在尝试根据创建记录的日期为每个记录创建唯一的ID。例如,如果今天创建记录,我希望键为20101130XX,其中XX是数字的顺序列表,例如01、02、03等…以防今天有多个人创建记录。 如果昨天有3个人创建了记录,则其唯一ID为 2011032700 2011032701 2011032702 然后午夜到了,有人创建了一个新记录 2011032800 这样做的目的是给每个记录一个唯一

  • 问题内容: Oracle是否具有内置功能来根据其各个组成部分(年,月和日)创建仅对缺失数据返回null的日期? 我知道,但是我需要首先编写一个字符串,并且运算符和函数都无法轻松处理丢失的数据: 只要是我们最终和: 问题答案: 例如,您可以使用: 不幸的是,Oracle没有一种方法(如果可能)进行转换,否则将返回NULL。SQL Server最近为此目的而引入。 一种选择是为失败的转换编写带有异常处