Spec-Zone.ru › Kotlin 1.8

fileVisitor

kotlin-stdlib / kotlin.io.path / fileVisitor
Требования к платформе и версии: JVM (1.7), JRE7 (1.7)
@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

Spec-Zone.ru

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