Spec-Zone.ru › Kotlin 2

walk

kotlin-stdlib/kotlin.io.path/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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API