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