1
我試圖從位於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;
}
這種方法的問題是,我基本上是下載指定目錄下的所有文件,每次調用該方法。
有沒有更好的方法來做到這一點?
很酷,很好的分析。代碼仍然很慢,這讓我猜測往返應該是怪罪。 謝謝。 – 2010-01-04 23:01:11
如果您在SftpFileObject.doListChildrenResolved看,每一個孩子都有在創建時填充它的屬性:((SftpFileObject)FileObjectUtils.getAbstractFileObject(FO))setStat(stat.getAttrs());所以我們可以排除檢索每個項目的文件屬性的可能性(sfpt ls命令已經獲得)。 爲什麼它是慢這將是有趣的,看看,也許你可以做一個tcpdump的/ Wireshark的(Linux工具),看看是否作出額外的連接。 – 2010-01-05 16:20:03