반응형

프로젝트 진행 중, 서버 내 " 공통문자열_자료구분번호_YYYYMMDDHH24mi "형식의 명명규칙을 가진 파일 가진 자료를 불러내어 js코드로 시계열 그래프를 생성해내는 로직을 구현하였다.
이때, Window OS인 로컬 환경에서는 파일명 기준 정렬(1. 자료 구분번호 기준 그룹화 / 2. 파일명 기준 오름차순)이 자동으로 적용되어 차트의 x범례가 시간기준으로 오름차순이 잘 적용된채 서버에서 반환되었다. 때문에 로직에 별도로 정렬 코드를 작성하지 않았는데, 문제가 발생하였다.
Linux OS인 운영 환경에서 동작 시, 자료 구분번호가 많아질 경우 서버에서 파일명 기준 정렬이 되지 않은 채 반환되어 차트의 시간이 뒤죽박죽된 채 표출되는 것이다.
문제 개선을 위해 리눅스 서버에서도 파일이 이름 기준으로 하여 오름차순 될 수 있도록 정렬 코드를 추가하였다.
// 파일명 기준 정렬
Arrays.sort(files, new Comparator<File>() {
public int compare(File f1, File f2) {
return f1.getName().compareTo(f2.getName());
}
});
Comparator 내부 익명클래스를 호출하여, 오름차순 정렬을 진행하였다.
위 코드를 폴더의 파일리스트를 불러온 바로 다음 구간에 추가하여, 이후의 조회 파일 분기로직을 문제없이 탈 수 있도록 하였다.
예시는 아래와 같다.
import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
public class FileSortTest {
public static void main(String[] args) {
// 🔹 테스트할 디렉터리 경로 (실제 경로로 변경하세요!)
String directoryPath = "C:\\테스트폴더"; // Windows 환경 예제
// String directoryPath = "/home/user/test"; // Linux 환경 예제
File folder = new File(directoryPath);
File[] files = folder.listFiles();
if (files == null || files.length == 0) {
System.out.println("❌ 해당 폴더에 파일이 없거나 존재하지 않습니다.");
return;
}
// 🔥 JDK 1.6 & 1.8 모두 호환되는 정렬 코드
Arrays.sort(files, new Comparator<File>() {
public int compare(File f1, File f2) {
return f1.getName().compareTo(f2.getName()); // 파일명 오름차순 정렬
}
});
// 🔹 정렬 후 파일 목록 출력
System.out.println("✅ 정렬된 파일 목록:");
for (File file : files) {
System.out.println(file.getName());
}
}
}
코드 추가 후 운영 환경에서도 정상적으로 파일명 기준 정렬된 파일 목록으로 시계열 그래프가 정상 표출 되었다!
반응형
'JAVA' 카테고리의 다른 글
[config.properties] 파일 경로 관리 (2) | 2025.03.05 |
---|---|
[MVC] 계산기 : 예제 (0) | 2022.01.18 |
[MVC] 학생관리시스템 : 예제 (0) | 2022.01.17 |
[컬렉션 프레임워크] 학생관리시스템_배열리스트 (0) | 2022.01.15 |
[MVC] MVC개념 & DAO·VO (0) | 2022.01.15 |