기술과 산업/언어 및 프레임워크
Java에서 폴더 내 모든 파일을 탐색하는 방법
B컷개발자
2025. 2. 10. 20:42
728x90
Java에서 폴더 내 모든 파일을 탐색하는 방법
Java에서 폴더와 그 하위 폴더의 모든 파일을 탐색하는 방법을 알아보겠습니다. Files.walk() API를 사용하여 이를 쉽게 구현할 수 있습니다.
1. 폴더 내 모든 파일 탐색하기
먼저, 단일 폴더 내의 모든 파일을 탐색하는 예제를 살펴보겠습니다.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;
public class FileTraverseExample {
public static void main(String[] args) {
String dirPath = "/Users/username/projects/test/";
try (Stream<Path> paths = Files.walk(Paths.get(dirPath))) {
paths
.filter(Files::isRegularFile)
.forEach(System.out::println);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
이 코드는 지정된 디렉토리의 모든 파일 경로를 출력합니다.
2. 폴더와 하위 폴더의 모든 파일 탐색하기
Files.walk() API는 기본적으로 하위 폴더까지 탐색합니다. 따라서 위의 코드를 그대로 사용하면 됩니다.
3. 폴더 내 모든 파일 이름 나열하기
파일 이름만 수집하고 싶다면 다음과 같이 코드를 수정할 수 있습니다:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Stream;
public class FileTraverseExample2 {
public static void main(String[] args) {
String dirPath = "/Users/username/projects/test/";
try (Stream<Path> paths = Files.walk(Paths.get(dirPath))) {
List<String> result = paths
.filter(Files::isRegularFile)
.map(p -> p.getFileName().toString())
.toList();
System.out.println("Total files: " + result.size());
result.forEach(name -> System.out.println("FileName: " + name));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
이 코드는 총 파일 수와 각 파일의 이름을 출력합니다.
4. 특정 파일 찾기
특정 파일을 찾고 싶다면 다음과 같이 구현할 수 있습니다:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Optional;
import java.util.stream.Stream;
public class FileTraverseExample3 {
public static void main(String[] args) {
String dir = "/Users/username/projects/test/";
String findThisFile = "a.txt";
try {
Optional<Path> foundFile = findFileByName(Paths.get(dir), findThisFile);
foundFile.ifPresentOrElse(
file -> System.out.println("File found: " + file),
() -> System.out.println("File not found.")
);
} catch (IOException e) {
System.err.println("An error occurred while searching for the file: " + e.getMessage());
}
}
public static Optional<Path> findFileByName(Path directory, String fileName) throws IOException {
try (Stream<Path> stream = Files.walk(directory)) {
return stream
.filter(Files::isRegularFile)
.filter(path -> path.getFileName().toString().equals(fileName))
.findFirst();
}
}
}
이 코드는 지정된 디렉토리와 그 하위 디렉토리에서 특정 파일을 찾아 그 경로를 반환합니다.
결론
Java의 Files.walk() API를 사용하면 폴더 내의 모든 파일을 쉽게 탐색할 수 있습니다. 이 방법은 파일 시스템 작업을 수행할 때 매우 유용하며, 스트림 API와 결합하여 강력한 파일 처리 기능을 제공합니다.
728x90