Вместо вашего метода "lastFileModified" я бы создал Comparator.Было бы проще написать метод сортировки:
public class LastModifiedComparator implements Comparator<FTPFile> {
public int compare(FTPFile f1, FTPFile f2) {
return f1.getTimestamp().compareTo(f2.getTimeStamp());
}
}
Затем, получить «последний» FTPFile гораздо проще:
public FTPFile getMaxLastModified(FTPFile[] ftpFiles) {
return Collections.max(Arrays.asList(ftpFiles), new LastModifiedComparator());
}
Вернемся к вашей проблеме:метка времени lastModified не связана с порядком загрузки по FTP.Когда вы загружаете файл по протоколу FTP, оригинальная временная метка файла может быть сохранена.
Таким образом, если файл1 старше файла2, ваш метод всегда возвращает файл2, даже если файл2 загружен до того, как файл1 будетFTP-сервер.
Я думаю, что невозможно определить последний загруженный файл.Эта информация не сохраняется протоколом FTP.Вы можете сделать это, только если вы перегрузите метод «put» вашего FTP-клиента:
public void put(File file) {
// upload code
FTPFile ftpFile = getJustUploadedFile(file);
ftpFile.setTimestamp(new Calendar()); // Now!
}