walk
Начиная с Kotlin: 2.1
fun Path.walk(vararg options: PathWalkOption): Sequence<Path>
Возвращает последовательность путей для обхода этого каталога и всего его содержимого.
По умолчанию возвращаемая последовательность включает только файлы в дереве файлов в порядке поиска в глубину. Символические ссылки не обходятся: если они встречаются, то включаются в последовательность без изменений, а содержимое каталогов, на которые они указывают, не обходится. Сочетание параметров переопределяет это поведение по умолчанию. Подробности см. в разделе PathWalkOption.
Порядок обхода соседних элементов не определён.
Если после вызова этой функции в дерево файлов, корнем которого является этот каталог, добавляются или из него удаляются элементы, эти изменения могут отразиться или не отразиться в возвращаемой последовательности.
Если элемент, указанный этим путём, не существует, возвращается пустая последовательность. Если элемент, указанный этим путём, не является каталогом, возвращается последовательность, содержащая только этот путь.
Пример:
val startDirectory = createTempDirectory()
run {
(startDirectory / "1" / "2" / "3" / "4").createDirectories()
(startDirectory / "1" / "2" / "3" / "a.txt").createFile()
(startDirectory / "1" / "2" / "b.txt").createFile()
(startDirectory / "c.txt").createFile()
}
// Default walk options. Prints:
// 1/2/b.txt
// 1/2/3/a.txt
// c.txt
startDirectory.walk().forEach { path ->
println(path.relativeTo(startDirectory))
}
// Custom walk options. Prints:
// 1
// c.txt
// 1/2
// 1/2/b.txt
// 1/2/3
// 1/2/3/a.txt
// 1/2/3/4
startDirectory.walk(PathWalkOption.INCLUDE_DIRECTORIES, PathWalkOption.BREADTH_FIRST).forEach { path ->
println(path.relativeTo(startDirectory))
}
При переборе возвращённой последовательности могут возникнуть следующие исключения:
FileSystemException, если при обходе встречается элемент с недопустимым именем, например "." или "..".
FileSystemLoopException, если при обходе обнаруживается цикл.
SecurityException, если установлен менеджер безопасности и он запрещает доступ к элементу, обнаруженному при обходе.
IOException, если при открытии каталога возникают ошибки.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.io.path/walk.html