> Java > java지도 시간 > Java에서 파일 디렉터리와 해당 하위 디렉터리를 효율적으로 탐색하는 방법은 무엇입니까?

Java에서 파일 디렉터리와 해당 하위 디렉터리를 효율적으로 탐색하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-20 04:23:09
원래의
778명이 탐색했습니다.

How to Efficiently Traverse a File Directory and Its Subdirectories in Java?

Java에서 파일 디렉토리의 하위 디렉토리 반복

Java에서 파일 작업을 할 때, 디렉터리뿐만 아니라 하위 디렉터리의 디렉터리도 마찬가지입니다. 이는 다음과 같은 질문을 제기합니다. Java에서 어떻게 디렉토리와 해당 하위 디렉토리를 효율적으로 탐색할 수 있습니까?

재귀: 표준 접근 방식

디렉터리 반복을 위한 표준 기술에는 다음을 사용하는 것이 포함됩니다. 재귀. File#isDirectory() 메서드를 사용하여 특정 파일이 디렉터리인지 테스트하면 File#listFiles() 결과로 동일한 메서드를 재귀적으로 호출할 수 있습니다.

다음 코드 조각은 이러한 재귀적 접근 방식을 보여줍니다.

import java.io.File;

public class Demo {

    public static void main(String... args) {
        File dir = new File("/path/to/dir");
        showFiles(dir.listFiles());
    }

    public static void showFiles(File[] files) {
        for (File file : files) {
            if (file.isDirectory()) {
                System.out.println("Directory: " + file.getAbsolutePath());
                showFiles(file.listFiles()); // Calls same method again.
            } else {
                System.out.println("File: " + file.getAbsolutePath());
            }
        }
    }
}
로그인 후 복사

Java 8 대안: 꼬리 재귀 Files#walk()

Java 8 이상 버전의 경우 Files#walk() 메서드는 재귀에 대한 대안을 제공합니다. 꼬리 재귀를 사용하여 깊은 디렉터리 트리가 있는 상황에서 StackOverflowError의 위험을 방지합니다.

다음은 디렉터리 반복을 위해 Files#walk()를 사용하는 방법입니다.

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class DemoWithJava8 {

    public static void main(String... args) throws Exception {
        Path dir = Paths.get("/path/to/dir");
        Files.walk(dir).forEach(path -> showFile(path.toFile()));
    }

    public static void showFile(File file) {
        if (file.isDirectory()) {
            System.out.println("Directory: " + file.getAbsolutePath());
        } else {
            System.out.println("File: " + file.getAbsolutePath());
        }
    }
}
로그인 후 복사

결론

File#isDirectory() 및 재귀를 활용하여 File#listFiles() 또는 Java 8에서 Files#walk()를 사용하면 Java 애플리케이션의 디렉터리 파일과 하위 디렉터리 파일을 모두 효과적으로 반복할 수 있습니다.

위 내용은 Java에서 파일 디렉터리와 해당 하위 디렉터리를 효율적으로 탐색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿