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;
}
이 방법의 문제는 기본적으로 내가 주어진 디렉토리에있는 모든 파일을 다운로드하고 있다는 것입니다, 매번 메서드를 호출 : 나는 지금 그것을 할 방법은 더 많거나 적은이다.
더 좋은 방법이 있습니까?
멋진 분석. 그래도 코드가 느리므로 왕복이 빚어지고 있다고 생각합니다. 감사합니다. –
SftpFileObject.doListChildrenResolved를 보면 모든 자식은 생성시 속성이 채워집니다. ((SftpFileObject) FileObjectUtils.getAbstractFileObject (fo)). setStat (stat.getAttrs()); 그래서 우리는 항목 당 파일 속성을 검색 할 가능성을 배제 할 수 있습니다 (sfpt ls 명령은 이미 그것을 얻습니다). 왜 천천히, 어쩌면 tcpdump/Wireshark (Linux 도구)를 사용하여 추가 연결을하는지 확인할 수 있습니다. –