KOTLIN · 파일/IO
디렉토리 탐색 (Directory Traversal)
File.walk()과 Path API로 디렉토리 트리를 효율적으로 탐색합니다.
파일/IO중급directorywalkfile-traversalnio-path
핵심 설명
File.walk()과 Path API로 디렉토리 트리를 효율적으로 탐색합니다.
Kotlin code
import java.io.File
import java.nio.file.*
fun main() {
val dir = File(".")
// walk: 재귀적 탐색
println("=== .kt 파일 ===")
dir.walk()
.filter { it.isFile && it.extension == "kt" }
.take(5)
.forEach { println(" ${it.path} (${it.length()} bytes)") }
// walkTopDown: 방향 지정 + 필터
println("
=== 디렉토리 구조 ===")
dir.walkTopDown()
.maxDepth(2)
.onEnter { !it.name.startsWith(".") } // 숨김 폴더 제외
.filter { it.isDirectory }
.take(10)
.forEach { println(" ${it.path}") }
// NIO Path API
println("
=== NIO 탐색 ===")
val path = Paths.get(".")
Files.walk(path, 2)
.filter { Files.isRegularFile(it) }
.limit(5)
.forEach { println(" $it (${Files.size(it)} bytes)") }
// 파일 정보
dir.listFiles()?.filter { it.isFile }?.take(3)?.forEach { f ->
println("${f.name}: ${f.lastModified()}")
}
}학습 팁
onEnter 콜백에서 false를 반환하면 해당 디렉토리 하위를 건너뜁니다. node_modules 등을 제외할 때 유용합니다.
주의할 점
walk()은 심볼릭 링크의 순환 참조를 감지하지 못할 수 있습니다. maxDepth를 설정하여 무한 탐색을 방지하세요.
자주 묻는 질문
디렉토리 탐색 (Directory Traversal)란 무엇인가요?
File.walk() 과 Path API로 디렉토리 트리를 효율적으로 탐색합니다.
디렉토리 탐색 (Directory Traversal) 학습 시 주의할 점은 무엇인가요?
walk() 은 심볼릭 링크의 순환 참조를 감지하지 못할 수 있습니다. maxDepth 를 설정하여 무한 탐색을 방지하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.