簡體   English   中英

如何在Java中基於時間戳對FTPFile []數組對象進行排序

[英]How to sort FTPFile[] array object based on timestamp in java

我正在從FTP服務器輪詢文件。 我有一個用例,根據時間戳對數組FTPFile []進行排序。 我想將第一個修改的文件作為第一個對象,將最后一個修改的文件作為我的FTPFile []數組對象中的最后一個對象。

有人可以建議我在Java中怎么做。 謝謝

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);

FTPFile對象編寫一個自定義的Comparator ,然后使用該Comparator使用Arrays.sort()

請注意,此方法對數組進行排序。

假設您正在談論Apache的commons-net 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的解決方案

假設FTPFile是一種Java File,或者可以翻譯成一個

Collections.sort(列表,比較器),您可以在其中使用以下比較器:

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;
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM