File.walk(path)
를 이용하여 어떤 디렉토리 하위의 모든 폴더 및 파일을 출력할 수 있습니다.
인자로 전달된 경로의 디렉토리를 재귀적으로 탐색하여, 하위의 모든 디렉토리 및 폴더를 탐색합니다.
탐색하는 파일들은 File 객체로 접근이 가능하기 때문에 File 클래스가 제공하는 API를 이용하여 파일을 처리할 수 있습니다.
예제를 통해 자세히 알아보겠습니다.
1. File.walk() : 재귀적으로 디렉토리의 파일 리스트 출력
예제에서는 다음 경로의 디렉토리를 탐색하고 파일 리스트를 출력할 것입니다.
~/tests/my_dir$ tree
.
├── a1.log
├── bb.log
├── t1.txt
├── t2.txt
├── test1
│ └── a1.log
├── test2
│ └── t3.txt
└── top.log
다음과 같이 File.walk()
를 이용하여 특정 경로를 탐색하며 모든 파일들을 출력할 수 있습니다.
import java.io.File
fun main(args: Array<String>){
File("/home/js/tests/my_dir").walk().forEach {
println(it)
}
}
Output:
/home/js/tests/my_dir
/home/js/tests/my_dir/top.log
/home/js/tests/my_dir/t1.txt
/home/js/tests/my_dir/t2.txt
/home/js/tests/my_dir/test2
/home/js/tests/my_dir/test2/t3.txt
/home/js/tests/my_dir/test1
/home/js/tests/my_dir/test1/a1.log
/home/js/tests/my_dir/a1.log
/home/js/tests/my_dir/bb.log
File API로 파일 처리
forEach
로 순회할 때, File 객체를 전달하기 때문에 File 클래스의 모든 API를 사용하여 파일을 처리할 수 있습니다.
import java.io.File
fun main(args: Array<String>){
File("/home/js/tests/my_dir").walk().forEach {
if (it.isFile) {
println("file: $it")
}
if (it.isDirectory) {
println("directory: $it")
}
}
}
Output:
directory: /home/js/tests/my_dir
file: /home/js/tests/my_dir/top.log
file: /home/js/tests/my_dir/t1.txt
file: /home/js/tests/my_dir/t2.txt
directory: /home/js/tests/my_dir/test2
file: /home/js/tests/my_dir/test2/t3.txt
directory: /home/js/tests/my_dir/test1
file: /home/js/tests/my_dir/test1/a1.log
file: /home/js/tests/my_dir/a1.log
file: /home/js/tests/my_dir/bb.log
2. File.walkBottomUp() : 재귀적으로 디렉토리의 파일 리스트 출력
다음과 같이 File.walkBottomUp()
를 이용하여 특정 경로를 탐색하며 모든 파일들을 출력할 수 있습니다. 최하위 경로에서 최상위 경로 순서로 파일을 탐색합니다.
import java.io.File
fun main(args: Array<String>){
File("/home/js/tests/my_dir").walkBottomUp().forEach {
println(it)
}
}
Output:
/home/js/tests/my_dir/top.log
/home/js/tests/my_dir/t1.txt
/home/js/tests/my_dir/t2.txt
/home/js/tests/my_dir/test2/t3.txt
/home/js/tests/my_dir/test2
/home/js/tests/my_dir/test1/a1.log
/home/js/tests/my_dir/test1
/home/js/tests/my_dir/a1.log
/home/js/tests/my_dir/bb.log
/home/js/tests/my_dir
3. File.walkTopDown() : 재귀적으로 디렉토리의 파일 리스트 출력
다음과 같이 File.walkTopDown()
를 이용하여 특정 경로를 탐색하며 모든 파일들을 출력할 수 있습니다. 최상위 경로에서 최하위 경로 순서로 파일을 탐색합니다.
import java.io.File
fun main(args: Array<String>){
File("/home/js/tests/my_dir").walkTopDown().forEach {
println(it)
}
}
Output:
/home/js/tests/my_dir
/home/js/tests/my_dir/top.log
/home/js/tests/my_dir/t1.txt
/home/js/tests/my_dir/t2.txt
/home/js/tests/my_dir/test2
/home/js/tests/my_dir/test2/t3.txt
/home/js/tests/my_dir/test1
/home/js/tests/my_dir/test1/a1.log
/home/js/tests/my_dir/a1.log
/home/js/tests/my_dir/bb.log
References
Loading script...
Related Posts
- Kotlin - 배열에서 최소 값, 최대 값 찾기
- Kotlin - 2차원 배열 선언, 초기화 방법
- Kotlin - 배열 선언, 초기화 방법
- Kotlin - 리스트, 배열 길이 가져오기
- Kotlin - 리스트에서 최대, 최소 값 찾기
- Kotlin - for 반복문, 배열/리스트 순회
- Kotlin - Timer, 주기적으로 함수 실행
- Kotlin - sleep, 쓰레드 몇 초 지연
- Kotlin - Thread 생성 및 실행
- Kotlin에서 정규표현식 사용하기
- Kotlin - 문자열 길이 계산
- Kotlin - 문자열 비교 방법(equals, ==, compareTo)
- Kotlin - 2개의 배열 하나로 합치기
- Kotlin - 2개의 List 하나로 합치기
- Kotlin - 디렉토리의 모든 파일 리스트 출력
- Kotlin - 리스트 정렬 방법 (sort, sortBy, sortWith)
- Kotlin - 문자열 뒤집기 (Reverse String)
- Kotlin - 랜덤 숫자 생성 (Random, SecureRandom)
- Kotlin - Range, 숫자 범위 표현
- Kotlin - 음수를 양수로 변환, math.abs()
- Kotlin - List를 Set로 변환
- Kotlin - Set를 List로 변환
- Kotlin - 문자열에서 숫자(int)만 추출하는 방법
- Kotlin - Map을 List로 변환하는 방법
- Kotlin - File, Directory가 존재하는지 확인
- Kotlin - List를 Map으로 변환
- Kotlin - List의 중복 요소 제거
- Kotlin - List를 Array로 변환
- Kotlin - 엘비스 연산자 (Elvis Operation)
- Kotlin - Array를 List로 변환
- Kotlin - String을 Float으로 변환
- Kotlin - String을 Double으로 변환
- Kotlin - String을 Int로 변환
- Kotlin - String을 Long으로 변환
- Kotlin - String Null 또는 Empty 체크