-1

我有一个包含多个文件的目录。我想按修改日期的差异对文件进行排序。

例如

file1.csv  (created 14:00:55)
file2.csv  (created 14:02:55)
file3.csv  (created 15:22:55)
file4.csv  (created 15:25:55)
file5.csv  (created 16:28:55)

与设定时间比较file1,例如 13:59(文件 1 = 1分钟时差) file1, (文件file22 = 2 分钟时差),file2file3文件 3 = 1 小时和 20 分钟时差),file3file4文件 4 = 3 分钟时差),file4file5(文件 5 = 1 小时差异)。并按照差异列出。该列表现在应该是:

file3.csv  (created 15:22:55)
file5.csv  (created 14:28:55)
file4.csv  (created 15:25:55)
file1.csv  (created 14:00:55)
file2.csv  (created 15:02:55)
4

1 回答 1

3

这样做的技巧是将文件(名称和实际修改时间)与用于对列表进行排序的值一起封装在一个对象中。即,你这样做:

  1. 按照要计算差异的顺序(文件名或修改时间)读取文件条目
  2. 将它们加载到集合中的对象中并计算要对它们进行排序的值;将排序值设置到对象中。
  3. 根据计算的值对集合进行排序

使用您的数据,假设原始订单是按文件名排列的,开始时间是 13:59:00

Original                        Calculated
Data                            Sort Key
-----------------------------   ----------
file1.csv  (created 14:00:55)      1:55
file2.csv  (created 14:02:55)      1:00
file3.csv  (created 15:22:55)     20:00
file4.csv  (created 15:25:55)      5:00
file5.csv  (created 16:28:55)      3:00

按“计算的排序键”列(降序)排序会给你你想要的。

这是 Java 中的示例(未经测试):

class FileWithTimeOffset implements Comparable<FileWithTimeOffset>
{
    String fileName;
    Date   creationDate;
    int    timeOffset;
    public int compareTo(FileWithTimeOffset other)
    {
        // return negative of comparison to achieve descending sort
        return -Integer.compare(this.timeOffset,other.timeOffset);
    }
}
于 2012-09-21T23:21:22.183 回答