2012-11-07 2 views
1

가능한 중복 :
How do I find the last modified file in a directory in Java?목록 파일이있는 그들은 폴더에 생성 된

나는 그들이 생성 된 순서대로 디렉토리에서 파일을 검색하는 것을 시도하고있다 . 이것은 Java를 사용하여 문제가되었습니다. File 클래스의 listFiles() 메서드는 파일이 반환되는 순서를 보장하지 않습니다. 디렉토리에서 만들어진 순서대로 파일을 검색하는 다른 방법이 있습니까?

+0

영업 이익은 생성 시간 * *를 찾고,하지 * 수정 시간 *을. 아래 내 대답을 참조하십시오 –

답변

1

당신은 새로운 TreeSet 함께 Set<File> sorted=new TreeSet(Comparator<File> byDate)를 사용하여 생성, 당신은 모든 File의 (unsorted.addAll(dir.listFiles())를 추가 할 경우 다음 을 Set<File> 분류되지 않은 만들기 File.lastModified

+0

그냥 나를 이길! 파일이 생성 된 이후에 수정되지 않은 경우에만 작동합니다 ... – DNA

+0

파일을이 폴더에 ftp 할 때 마지막으로 수정 한 날짜가 생성 된 날짜의 신뢰할 수있는 소스입니까? –

+0

'ftp'd' 란 무엇입니까? 그리고 그것을 사용해 보셨습니까? 올바른 결과를주고 있습니까? –

0

에 기초하여 Comparator를 사용 File.listFiles()하여 array of files 반환 정렬 할 필요가있다 날짜를 비교하는 사용자 지정 비교 자.

Comparator<File> byDate=new Comparator<File>() { 

    @Override 
    public int compare(File o1, File o2) { 
     return new Date(o1.lastModified()).compareTo(new Date(o2.lastModified())); 
    } 
}; 

및 수행

sorted.addAll(unsorted); 

새로운 설정은 날짜별로 정렬됩니다.

1

아니요, 아니지만, Arrays.sort 메서드는 Comparator이됩니다. 나는 아래의 간단한 정의와 자신을 노크했습니다이 도움이

new Comparator<File>() { 
public int compare(File m1, File m2) { 
    return m1.lastModified().compare(m2.lastModified()); 
} 
}); 

희망 ... 당신은 이미 listFiles 보장과 질서하지 않습니다 알아 냈어으로

0

합니다. this question에서 설명한 것처럼 속성을 생성 시간을 찾고 thia과 같은 것을 사용하여 정렬 할 수 있습니다.

0

Java API에서 File을 보면 lastModified이라는 메소드가 있습니다. 이 속성으로 파일을 정렬하면 원하는 것을 얻을 수 있습니다. 각 구현은 OS마다 다르므로 작성 후 파일을 정렬 할 방법이 없다고 확신합니다.

그래서 당신은 비교기과 같이 한 경우 :

public class FileComparator implements Comparator<File> { 
    public int compare(File x, File y) { 
    Long.compare(x.lastModified(), y.lastModified()); 
    } 
} 

과 같이 사용할 수 있습니다

File file = new File("..."); 
List<File> files = Arrays.asList(file.listFiles()); 
Collections.sort(files, new FileComparator()); 
관련 문제