Java NIO의 Files.walk() 메서드를 사용하여 파일 시스템을 탐색하는 예제 코드를 살펴보겠습니다.
작성 환경
- Java 버전: JDK 1.8
- 운영체제: Windows 11
코드 예제
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 FileSystem {
public static void main(String[] args) {
try (Stream<Path> paths = Files.walk(Paths.get("D:\\FileSystemTest"))) {
paths.filter(path -> Files.isRegularFile(path))
.forEach(path -> System.out.println(path));
} catch (IOException e) {
e.printStackTrace();
}
}
}
코드 설명
- Files.walk(): 주어진 시작 디렉토리부터 모든 하위 디렉토리를 재귀적으로 탐색합니다.
- Paths.get(): 문자열 경로를 Path 객체로 변환합니다.
- Files.isRegularFile(): 해당 경로가 일반 파일인지 확인합니다.
- Stream API를 사용하여 파일 필터링 및 처리를 수행합니다.
코드 실행 결과
- 폴더 만 있을 경우는 출력하지 않고, 파일 있을 경우에만 출력합니다. -> Files.isRegularFile 필터
D:\FileSystemTest\test1\FileSystemTest.java
D:\FileSystemTest\test2\FileSystemTest2.java
주요 특징
- try-with-resources 구문을 사용하여 자원을 자동으로 해제
- Stream API를 활용한 선언적 프로그래밍
- 개발자가 직접 재귀 함수를 구현할 필요가 없음
사용 시 주의사항
- 대용량 디렉토리를 탐색할 때는 메모리 사용량에 주의해야 합니다.
- 순환 참조(Symbolic Link)가 있는 경우 무한 루프에 빠질 수 있으므로 적절한 방문 깊이를 설정해야 합니다.
- 파일 시스템 접근 권한을 확인해야 합니다.
'언어 > JAVA' 카테고리의 다른 글
[java-기초] 터미널에서 작성, 컴파일, 그리고 실행하는 방법 (0) | 2024.05.01 |
---|---|
[jdk] 인텔리제이를 이용한 jdk 다운로드 (0) | 2024.04.30 |
[spring - swagger] springdoc-openapi를 이용한 스프링 부트 3 스웨거 간단 적용 (0) | 2024.04.18 |
[spring web] jar 실행시 프로파일 선택 (0) | 2022.04.21 |
[java] classpath 콘솔 실행 라이브러리 추가 (0) | 2021.07.25 |