如何根据java中的时间戳对FTPFile []数组对象进行排序

时间:2014-04-04 07:02:34

标签: java ftp comparator

我正在从FTP服务器轮询文件。我有一个用例来根据时间戳对数组FTPFile []进行排序。我想首先修改文件作为第一个对象,最后修改的文件作为我的FTPFile []数组对象中的最后一个对象。

有人可以建议我在java中怎么做。感谢

3 个答案:

答案 0 :(得分:0)

Java7 或更低
请参阅fge的帖子

Java8

final FTPFile[]           files  = new FTPFile[100];   //or what ever    
final Comparator<FTPFile> sorter = (e1, e2) -> e1.getTimestamp().compareTo(e2.getTimestamp());

Arrays.sort(files, sorter);

答案 1 :(得分:0)

Comparator个对象编写自定义FTPFile,然后使用Comparator使用Arrays.sort()

请注意,此方法会对数组进行排序

假设您正在讨论Apache的公共网络FTPFile,比较器可以这样编写:

private static final Comparator<FTPFile> CMP = new Comparator<>()
{
    @Override
    public int compare(final FTPFile a, final FTPFile b)
    {
        return a.getTimeStamp().compareTo(b.getTimeStamp());
    }
}

如果您使用Java 8,请查看@ ifLoop的解决方案

答案 2 :(得分:0)

假设FTPFile是一种java文件,或者可能被翻译为获得一个

Collections.sort(list,comparator),您可以使用以下比较器:

class FileComparator implements Comparator<File> {

@Override
public int compare(File o1, File o2) {

    try {
        BasicFileAttributes attr1 = Files.readAttributes(o1.toPath(), BasicFileAttributes.class);
        BasicFileAttributes attr2 = Files.readAttributes(o2.toPath(), BasicFileAttributes.class);
        return attr1.lastModifiedTime().compareTo(attr2.lastModifiedTime());

    } catch (IOException e) {
        // Handle this the way you want
        e.printStackTrace();
    }
    return 0;
}

}