java - 在Java中,如何根据文件的最后修改日期将 vector 中的文件排序为3个不同的 vector ?

标签 java sorting file-io vector

如果我有一个包含许多未排序文件的 vector ,我如何按上次修改日期对它们进行分类?

我需要做的是将文件放入另外 3 个 vector 中,最后修改日期为“今天”、“昨天”和“本周”。

Vector<File> files;  //This vector contains all the files that need to be categorized
Vector<File> todayFiles;  //Empty
Vector<File> yesterdayFiles;  //Empty
Vector<File> weekFiles;  //Empty

我知道我可以使用 file.lastModified() 来获取日期,但它返回格式为 long int 的以毫秒为单位的日期,因此我不确定是否有更简单的方法来比较和分组日期,而无需执行一些复杂的算术工作。

我是 Java 新手,所以我不知道如何解决这个问题,任何帮助将不胜感激。

更新

我能够以某种方式让代码工作,但它仍然无法正常工作。这就是我所拥有的:

private Calendar cal;
private long todayTime;

this.cal = Calendar.getInstance();
this.cal.set(Calendar.HOUR_OF_DAY, 0);
this.cal.set(Calendar.HOUR, 0);
this.cal.set(Calendar.MINUTE, 0);
this.cal.set(Calendar.SECOND, 0);
this.cal.set(Calendar.MILLISECOND, 0);
this.todayTime = cal.getTimeInMillis();

现在,当我尝试将它们添加到我创建的 vector 中时,它只会抓取在今天下午修改过的文件:

for(int i = 0; i < this.files.size(); i++) {
    if(this.files.get(i).lastModified() >= this.todayTime) {
        this.today.add(this.files.get(i));  
    }
}

我是不是做错了什么?顺便感谢您的所有精彩回复!

最佳答案

您可以使用Calendar类来获取所需日期(例如今天和昨天)的时间戳。例如,要获取今天(午夜)的时间戳:

Calendar cal = Calendar.getInstance();
// cal initially contains current time
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);

long todayTimestamp = cal.getTimeInMillis();

然后你可以将这个时间戳与file.lastModified()进行比较,并将文件放入相应的 vector 中。

关于java - 在Java中,如何根据文件的最后修改日期将 vector 中的文件排序为3个不同的 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9355996/

相关文章:

java - 如何在 Java Swing 中将文本文件读入 jtextarea

java - Spring集成拖尾多个文件

algorithm - 适用于排序列表的排序算法

PHP 基于子对象值的短数组

java - 数组按字母顺序排序

Java:BufferedInputStream 的 available() 方法存在问题

java - 可以在 switch 的一个 case 语句中进行两次比较吗?

java - Google App Engine + AdWords API : java. lang.NoClassDefFoundError: javax/xml/soap/SOAPException

java - 将样式文本写入 .docx 文件

c# - 是否可以将自定义元数据添加到文件中?