FTP 서버에서 파일을 폴링합니다. timestamp를 기반으로 배열 FTPFile []을 정렬하는 유스 케이스가 있습니다. 먼저 FTPFile [] 배열 객체의 첫 번째 객체로 파일을 수정하고 마지막 객체로 마지막으로 수정하려고합니다.Java의 타임 스탬프를 기준으로 FTPFile [] 배열 객체를 정렬하는 방법
자바에서 수행하는 방법을 제안 할 수 있습니까? 감사합니다
FTP 서버에서 파일을 폴링합니다. timestamp를 기반으로 배열 FTPFile []을 정렬하는 유스 케이스가 있습니다. 먼저 FTPFile [] 배열 객체의 첫 번째 객체로 파일을 수정하고 마지막 객체로 마지막으로 수정하려고합니다.Java의 타임 스탬프를 기준으로 FTPFile [] 배열 객체를 정렬하는 방법
자바에서 수행하는 방법을 제안 할 수 있습니까? 감사합니다
Java7이하 :
참조 fge의 포스트
Java8 :
final FTPFile[] files = new FTPFile[100]; //or what ever
final Comparator<FTPFile> sorter = (e1, e2) -> e1.getTimestamp().compareTo(e2.getTimestamp());
Arrays.sort(files, sorter);
이 FTPFile
개체에 대한 사용자 정의 Comparator
를 작성하고 사용 Arrays.sort()
를 사용 그 Comparator
.
이 메서드는 배열 을에 정렬합니다. 당신을 가정
아파치의 평민 - 그물 FTPFILE에 대해 이야기하고, 비교기는 같이 쓸 수있다 : 자바 8 사용하는 경우
private static final Comparator<FTPFile> CMP = new Comparator<>()
{
@Override
public int compare(final FTPFile a, final FTPFile b)
{
return a.getTimeStamp().compareTo(b.getTimeStamp());
}
}
다음 FTPFILE 가정 @ ifLoop의 솔루션
보고 Java 파일의 종류 또는 하나를 얻기 위해 번역 될 수 있습니다
Collections.sort (list, comparator), 다음 비교기를 사용할 수 있습니다 :
class FileComparator implements Comparator<File> {
@Override
public int compare(File o1, File o2) {
try {
BasicFileAttributes attr1 = Files.readAttributes(o1.toPath(), BasicFileAttributes.class);
BasicFileAttributes attr2 = Files.readAttributes(o2.toPath(), BasicFileAttributes.class);
return attr1.lastModifiedTime().compareTo(attr2.lastModifiedTime());
} catch (IOException e) {
// Handle this the way you want
e.printStackTrace();
}
return 0;
}
}
결과는 힌트 : – fge
편집, 감사합니다! – ifloop