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 중국어 웹사이트의 기타 관련 기사를 참조하세요!