我正在从FTP服务器轮询文件。我有一个用例来根据时间戳对数组FTPFile []进行排序。我想首先修改文件作为第一个对象,最后修改的文件作为我的FTPFile []数组对象中的最后一个对象。
有人可以建议我在java中怎么做。感谢
答案 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;
}
}