[英]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.