Spec-Zone.ru › Kotlin 1.9

copyToRecursively

kotlin-stdlib / kotlin.io.path / java.nio.file.Path / copyToRecursively
Требования к платформе и версии: JVM (1.8), JRE7 (1.8)
@ExperimentalPathApi fun Path.copyToRecursively(
    target: Path, 
    onError: (source: Path, target: Path, exception: Exception) -> OnErrorResult = { _, _, exception -> throw exception }, 
    followLinks: Boolean, 
    overwrite: Boolean
): Path

Рекурсивно копирует эту директорию и её содержимое в указанный целевой путь target. Обратите внимание, что если эта функция вызывает исключение, частичная копия может быть выполнена.

В отличие от File.copyRecursively, если некоторые директории по пути к целевому пути отсутствуют, то они не будут автоматически созданы. Вы можете использовать функцию createParentDirectories, чтобы убедиться, что требуемые промежуточные директории созданы:

sourcePath.copyToRecursively(
    destinationPath.createParentDirectories(),
    followLinks = false
)

Если элемент, расположенный по этому пути, является директорией, эта функция рекурсивно копирует саму директорию и её содержимое. В противном случае, эта функция копирует только сам элемент.

Если при попытке чтения, открытия или копирования любого элемента в поддереве источника возникает исключение, дальнейшие действия будут зависеть от результата вызова onError с путями источника и назначения, вызвавшими ошибку, и самим исключением в качестве аргументов. Если onError вызывает исключение, эта функция завершается сразу с этим исключением. По умолчанию onError перебрасывает исключение. См. OnErrorResult для доступных вариантов.

Эта функция выполняет операцию «слияния директорий». Если элемент в поддереве источника является директорией, а соответствующий элемент в поддереве назначения уже существует и также является директорией, ничего не происходит. В противном случае, overwrite определяет, нужно ли перезаписывать существующие элементы назначения. Атрибуты элемента источника, такие как дата создания/модификации, не копируются. followLinks определяет, нужно ли копировать символическую ссылку саму или её целевой объект. Символические ссылки в поддереве назначения не отслеживаются.

Для предоставления пользовательской логики копирования используйте перегрузку, принимающую copyAction лямбда-выражение.

Параметры

target - целевой путь, куда рекурсивно копировать этот элемент.

onError - функция, определяющая дальнейшие действия при возникновении ошибки. По умолчанию, перебрасывает исключение.

followLinks - false для копирования символической ссылки самой, а не её целевого объекта. true для рекурсивного копирования целевого объекта символической ссылки.

overwrite - false для выброса исключения, если элемент назначения уже существует. true для перезаписи существующих элементов назначения.

Исключения

NoSuchFileException - если элемент, расположенный по этому пути, не существует.

FileSystemException - если target является элементом внутри поддерева источника.

FileAlreadyExistsException - если элемент назначения уже существует и overwrite имеет значение false. Это исключение передается в onError для обработки.

IOException - если возникают какие-либо ошибки при копировании. Это исключение передается в onError для обработки.

SecurityException - если установлен менеджер безопасности и доступ к элементу в поддереве источника или назначения запрещен. Это исключение передается в onError для обработки.

Требования к платформе и версии: JVM (1.8), JRE7 (1.8)
@ExperimentalPathApi fun Path.copyToRecursively(
    target: Path, 
    onError: (source: Path, target: Path, exception: Exception) -> OnErrorResult = { _, _, exception -> throw exception }, 
    followLinks: Boolean, 
    copyAction: CopyActionContext.(source: Path, target: Path) -> CopyActionResult = { src, dst ->
        src.copyToIgnoringExistingDirectory(dst, followLinks)
    }
): Path

Рекурсивно копирует эту директорию и её содержимое в указанный целевой путь target. Обратите внимание, что при возникновении ошибки частичное копирование может произойти.

В отличие от File.copyRecursively, если некоторые директории по пути к цели отсутствуют, они не будут автоматически созданы. Вы можете использовать функцию createParentDirectories, чтобы гарантировать создание необходимых промежуточных директорий:

sourcePath.copyToRecursively(
    destinationPath.createParentDirectories(),
    followLinks = false
)

Если элемент, расположенный по этому пути, является директорией, эта функция рекурсивно копирует саму директорию и её содержимое. В противном случае, эта функция копирует только элемент.

Если при попытке чтения, открытия или копирования любого элемента в поддереве источника возникает исключение, дальнейшие действия будут зависеть от результата вызова onError с путями источника и назначения, вызвавшими ошибку, и самим исключением в качестве аргументов. Если onError выбросит исключение, эта функция немедленно завершается с этим исключением. По умолчанию onError повторно выбрасывает исключение. См. OnErrorResult для доступных опций.

Операция копирования выполняется с помощью copyAction. По умолчанию copyAction выполняет операцию "слияния директорий". Если элемент в поддереве источника является директорией, а соответствующий элемент в поддереве назначения уже существует и также является директорией, ничего не делается. В противном случае элемент копируется с помощью sourcePath.copyTo(destinationPath, *followLinksOption), который не копирует атрибуты исходного элемента и выбрасывает исключение, если элемент назначения уже существует. followLinks определяет, копировать ли символическую ссылку саму или её целевой объект. Символические ссылки в поддереве назначения не отслеживаются.

Если предоставляется пользовательская реализация copyAction, рекомендуется сделать её согласованной со значением followLinks. См. CopyActionResult для доступных опций.

Если copyAction выбросит исключение, оно будет передано в onError для обработки.

Параметры

target - целевой путь для рекурсивного копирования этого элемента.

onError - функция, определяющая дальнейшие действия при возникновении ошибки. По умолчанию повторно выбрасывает исключение.

followLinks - false для копирования символической ссылки самой, а не её целевого объекта. true для рекурсивного копирования целевого объекта символической ссылки.

copyAction - функция для вызова при копировании исходных элементов в их целевой путь, корневой путь которого задаётся в target. По умолчанию выполняется операция "слияния директорий".

Исключения

NoSuchFileException - если элемент, расположенный по этому пути, не существует.

FileSystemException - если target является элементом внутри поддерева источника.

IOException - если при копировании возникли ошибки. Это исключение передаётся в onError для обработки.

SecurityException - если установлен менеджер безопасности и доступ к элементу в поддереве источника или назначения запрещён. Это исключение передаётся в onError для обработки.

© 2010–2023 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/java.nio.file.-path/copy-to-recursively.html

Spec-Zone.ru

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