[Java] File객체의 listFiles() 정렬기준에 대한 메모

[Java] File객체의 listFiles() 정렬기준에 대한 메모

자바의 File객체에는 listFiles()라는 메서드가 있다. File객체가 디렉토리일 경우 디렉토리 내부의 파일들을 배열로 만들어 File[] 형태로 리턴해준다.

업무상 어떤 일배치 프로그램이 있다. 앞서 설명한 listFiles() 메서드를 사용해 리턴받은 File배열을 for문 돌려 처리하는 프로그램이다. 이 프로그램은 요건상 꼭 파일명 순으로 처리가 되어야 한다. 그런데 이번에 파일명 순으로 for문이 돌지 않는다는 버그가 리포트되었다.

여러가지로 테스트를 시도해봤지만 listFiles()는 파일명 오름차순의 File객체 배열을 잘 만들어주고 있었다. 윈도우 상에서 이런저런 테스트를 해보다가 결국 리눅스 서버에 올려 테스트를 해보았는데, 리눅스 상에서는 날짜순으로 배열을 만들어 리턴하는게 아닌가.

자바 버전의 차이인지 운영체제의 차이인지는 모르겠지만 앞으로 listFiles()를 사용할 때는 명시적으로 원하는 기준을 정해 정렬시키고 작업해야겠다는 생각이 들었다. 배포할 때마다 자바 및 운영체제 버전을 일일히 체크하기보다, 마음 편하게 명시적으로 정렬해주는게 낫다는 생각이다.