Я пытаюсь вытащить последний файл из каталога, который находится на сервере SFTP. Как я сделать это прямо сейчас более или менее:Apache VFS: последний измененный начнут извлекать файл каталога (SFTP)
public FileObject getLatestFile(String directory) throws FileSystemException {
FileObject fo = fsManager.resolveFile(this.host+directory, fsOptions);
FileObject latestFile = null;
long max = 0;
fo.getContent().
for (FileObject fob : fo.getChildren()){
if (fob.getContent().getLastModifiedTime() > max) {
max = fob.getContent().getLastModifiedTime();
latestFile = fob;
}
}
return latestFile;
}
Проблема с этим подходом является то, что я в основном загрузки каждого файла в заданной директории, каждый метод вызывается.
Есть ли лучший способ сделать это?
прохладно, хороший анализ. Тем не менее, код медленный, что заставляет меня угадать, что обвинения виноваты. Спасибо. –
Если вы смотрите в SftpFileObject.doListChildrenResolved, каждый ребенок имеет свои атрибуты заселенных во время создания:. ((SftpFileObject) FileObjectUtils.getAbstractFileObject (Ф.О.)) setStat (stat.getAttrs()); поэтому мы можем исключить возможность получения атрибутов файлов для каждого элемента (команда sfpt ls уже получает это). Было бы интересно узнать, почему это происходит медленно, возможно, вы можете сделать tcpdump/Wireshark (инструменты Linux), чтобы увидеть, производят ли дополнительные подключения. –