Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)로 디렉터리의 모든 파일을 재귀적으로 나열하는 프로그램


D 드라이브에 ExampleDirectory라는 이름의 폴더가 있고, 그 안에는 7개의 파일과 2개의 하위 디렉터리가 있다고 가정해 보겠습니다.

자바(Java)로 디렉터리의 모든 파일을 재귀적으로 나열하는 프로그램

각 하위 디렉터리의 구성은 다음과 같습니다.

  • SampleDirectory1에는 SampleFile1.txt와 SampleFile2.txt 두 개의 파일이 들어 있습니다.

  • SampleDirectory2에는 SampleFile2.txt와 SampleFile3.txt 두 개의 파일이 들어 있습니다.

동작 원리

이 프로그램은 java.io.File 클래스의 listFiles() 메서드를 활용합니다. 이 메서드는 대상 디렉터리에 포함된 모든 파일과 폴더를 File 객체 배열로 반환하며, 숨김 파일까지 함께 가져옵니다. 반환된 요소가 일반 파일이면 이름을 출력하고, 디렉터리라면 자기 자신을 다시 호출하는 재귀 호출 방식으로 하위 폴더의 내용까지 모두 탐색합니다.

예제 코드

다음 자바 예제는 ExampleDirectory 디렉터리와 그 하위 폴더에 있는 모든 파일의 이름을 재귀적으로 출력합니다.

import java.io.File;
import java.io.IOException;
public class ListOfFiles {
    public static void listOfFiles(File dirPath){
        File filesList[] = dirPath.listFiles();
        for(File file : filesList) {
            if(file.isFile()) {
                System.out.println("File path: "+file.getName());
            } else {
                listOfFiles(file);
            }
        }
    }
    public static void main(String args[]) throws IOException {
        // 디렉터리를 나타내는 File 객체 생성
        File file = new File("D:\\ExampleDirectory");
        // 모든 파일과 디렉터리 목록 출력
        listOfFiles(file);
    }
}

실행 결과

File path: cassandra_logo.jpg
File path: cat.jpg
File path: coffeescript_logo.jpg
File path: javafx_logo.jpg
File path: SampleFile1.txt
File path: SampleFile2.txt
File path: SampleFile4.txt
File path: SapmleFile3.txt
File path: SampleHiddenfile1.txt
File path: SampleHiddenfile2.txt
File path: SampleHiddenfile3.txt

실행 결과를 보면 최상위 디렉터리의 이미지 및 텍스트 파일뿐만 아니라 SampleDirectory1과 SampleDirectory2 내부의 파일, 그리고 숨김 파일까지 모두 출력된 것을 확인할 수 있습니다. 이처럼 재귀 호출을 활용하면 폴더의 깊이에 상관없이 전체 파일 목록을 손쉽게 가져올 수 있습니다.