fileVisitor
@ExperimentalPathApi fun fileVisitor( builderAction: FileVisitorBuilder.() -> Unit ): FileVisitor<Path>
Создаёт FileVisitor, реализация которого определена в builderAction.
По умолчанию, возвращаемый файловый посетитель посещает все файлы и перебрасывает исключения ввода-вывода, то есть:
- FileVisitor.preVisitDirectory возвращает FileVisitResult.CONTINUE.
- FileVisitor.visitFile возвращает FileVisitResult.CONTINUE.
- FileVisitor.visitFileFailed перебрасывает исключение ввода-вывода, помешавшее посетить файл.
- FileVisitor.postVisitDirectory возвращает FileVisitResult.CONTINUE, если итерация каталога завершилась без исключения ввода-вывода; в противном случае перебрасывает исключение ввода-вывода, которое вызвало преждевременное завершение итерации каталога.
Чтобы переопределить функцию, предоставьте её реализацию соответствующей функции FileVisitorBuilder, которая была передана в качестве получателя в builderAction. Обратите внимание, что каждая функция может быть переопределена только один раз. Повторное переопределение функции вызовет IllegalStateException.
Билдэр валиден только внутри функции builderAction. Использование его вне функции вызовет IllegalStateException.
Пример:
val cleanVisitor = fileVisitor {
onPreVisitDirectory { directory, _ ->
if (directory.name == "build") {
directory.toFile().deleteRecursively()
FileVisitResult.SKIP_SUBTREE
} else {
FileVisitResult.CONTINUE
}
}
onVisitFile { file, _ ->
if (file.extension == "class") {
file.deleteExisting()
}
FileVisitResult.CONTINUE
}
}
© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io.path/file-visitor.html