이전 글에서 이어 파일 처리를 할 때 파일 등록순에 따라 정렬이 필요하여 사용해보았다. 먼저 Collections.sort()를 사용하게된 이유부터 정리해보았다.
Collections.sort vs Arrays.sort 차이
Comparable vs Comparator 차이
=>
파일이름의 경우 "파일이름_yyyyMMddHHmmss(LocalDateTime).xlsx"의 형식을 사용하고 있다.
ex ) testData_202311110101.xlsx
File List이고, 파일간의 비교가 필요했기에 Collections.sort(List list, Comparator)를 사용하여 비교하였다.
Collections.sort(workList, new Comparator<File>() {
@Override
public int compare(File file1, File file2) {
String fileName1 = file1.getName();
String fileName2 = file2.getName();
LocalDateTime dateTime1 = parseDateTimeFromFileName(fileName1);
LocalDateTime dateTime2 = parseDateTimeFromFileName(fileName2);
return dateTime1.compareTo(dateTime2);
}
});
private LocalDateTime parseDateTimeFromFileName(String fileName) {
String[] dateTimeString = fileName.replace(".xlsx","").split("_");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
if (dateTimeString.length > 0) {
return LocalDateTime.parse(dateTimeString[dateTimeString.length - 1], formatter);
}
return null;
}
workList의 파일 목록에서 등록 오름차순으로 파일을 처리하도록 하였다.