Spec-Zone.ru › Kotlin 2

visitFileTree

kotlin-stdlib/kotlin.io.path/visitFileTree

Начиная с Kotlin: 2.1

fun Path.visitFileTree(visitor: FileVisitor<Path>, maxDepth: Int = Int.MAX_VALUE, followLinks: Boolean = false)

Обходит этот каталог и все его содержимое с помощью указанного обходчика.

Обход выполняется в порядке обхода в глубину и начинается с этого каталога. Указанный обходчик вызывается для каждой встреченной записи.

Пример:

val cleanVisitor = fileVisitor {
onPreVisitDirectory { directory, _ ->
if (directory.name == "build") {
directory.deleteRecursively()
FileVisitResult.SKIP_SUBTREE
} else {
FileVisitResult.CONTINUE
}
}

onVisitFile { file, _ ->
if (file.extension == "class") {
file.deleteExisting()
}
FileVisitResult.CONTINUE
}
}

projectDirectory.visitFileTree(cleanVisitor)

Параметры

visitor

FileVisitor, получающий обратные вызовы.

maxDepth

Максимальная глубина обхода. По умолчанию ограничение отсутствует.

followLinks

Указывает, следует ли переходить по символическим ссылкам; по умолчанию false. Если true, обход переходит по символическим ссылкам и посещает содержимое каталогов, на которые они указывают.

См. также

Files.walkFileTree

Исключения

IllegalArgumentException

Если maxDepth отрицателен.

SecurityException

Если установлен менеджер безопасности и он запрещает доступ к записи, обнаруженной во время обхода.

IOException

Если функция обходчика выбрасывает исключение ввода-вывода.


fun Path.visitFileTree(maxDepth: Int = Int.MAX_VALUE, followLinks: Boolean = false, builderAction: FileVisitorBuilder.() -> Unit)

Обходит этот каталог и все его содержимое с помощью FileVisitor, заданного в builderAction.

Эта функция работает так же, как Path.visitFileTree. Она предназначена для упрощения случаев, когда FileVisitor создаётся только для немедленного использования при обходе дерева файлов. Замыкающая лямбда builderAction передаётся в fileVisitor для получения обходчика файлов.

Пример:

projectDirectory.visitFileTree {
onPreVisitDirectory { directory, _ ->
if (directory.name == "build") {
directory.deleteRecursively()
FileVisitResult.SKIP_SUBTREE
} else {
FileVisitResult.CONTINUE
}
}

onVisitFile { file, _ ->
if (file.extension == "class") {
file.deleteExisting()
}
FileVisitResult.CONTINUE
}
}

Параметры

maxDepth

Максимальная глубина обхода. По умолчанию ограничение отсутствует.

followLinks

Указывает, следует ли переходить по символическим ссылкам; по умолчанию false. Если true, обход переходит по символическим ссылкам и посещает содержимое каталогов, на которые они указывают.

builderAction

Функция, задающая обратные вызовы для обработки событий посещения записей.

См. также

Files.walkFileTree
fileVisitor

Исключения

IllegalArgumentException

Если maxDepth отрицателен.

SecurityException

Если установлен менеджер безопасности и он запрещает доступ к записи, обнаруженной во время обхода.

IOException

Если функция обходчика выбрасывает исключение ввода-вывода.

IllegalStateException

Если предоставленный builderAction неправильно задаёт FileVisitor. Подробности см. в описании fileVisitor.

© 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/visit-file-tree.html

Spec-Zone.ru

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