파일 목록을 생성된 순서대로 정렬하여 오래된 것을 삭제하려고 합니다.


하지만 정렬을 할 때 예외가 발생합니다. 문제는 모든 단말기에서 발생하지 않고 몇몇 단말기에서 발생됩니다.


Arrays.sort의 부분에서 예외가 발생합니다.


File[] files = dir.listFiles();
		if (files == null) {
			return;
		}
		
		Arrays.sort(files, new Comparator<File>() {


			@Override
			public int compare(File file1, File file2) {
				return (int) (file2.lastModified() - file1.lastModified());
			}
		});
		
		int len = files.length;
		for (int i = keepCnt; i < len; i++) {
			File f = files[i];
			f.delete();
		}


예외 발생 내용은 아래와 같습니다.


java.lang.IllegalArgumentException: Comparison method violates its general contract!

at java.util.TimSort.mergeHi(TimSort.java:864)

at java.util.TimSort.mergeAt(TimSort.java:481)

at java.util.TimSort.mergeForceCollapse(TimSort.java:422)

at java.util.TimSort.sort(TimSort.java:219)

at java.util.TimSort.sort(TimSort.java:169)

at java.util.Arrays.sort(Arrays.java:1907)



위의 소스에 잘못된 부분이 있다면 지적 좀 부탁드립니다. 그리고 예외발생된 원인을 알고 싶습니다.