copyToRecursively
@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, если некоторые каталоги по пути к целевому пути отсутствуют, они не будут автоматически созданы. Вы можете использовать следующий подход для обеспечения создания необходимых промежуточных каталогов:
sourcePath.copyToRecursively(
destinationPath.apply { parent?.createDirectories() },
followLinks = false
)
Если элемент, расположенный по этому пути, является каталогом, эта функция рекурсивно копирует сам каталог и его содержимое. В противном случае, эта функция копирует только сам элемент.
Если при попытке чтения, открытия или копирования любого элемента в поддереве источника возникает исключение, дальнейшие действия будут зависеть от результата вызова onError с путями источника и назначения, вызвавшими ошибку, и самим исключением в качестве аргументов. Если onError вызывает исключение, эта функция завершается немедленно с этим исключением. По умолчанию onError перебрасывает исключение. Смотрите OnErrorResult для доступных вариантов.
Эта функция выполняет операцию «слияния каталогов». Если элемент в поддереве источника является каталогом, а соответствующий элемент в поддереве назначения уже существует и также является каталогом, ничего не делается. В противном случае, overwrite определяет, нужно ли перезаписывать существующие элементы назначения. Атрибуты элемента источника, такие как дата создания/изменения, не копируются. followLinks определяет, нужно ли копировать сам символическую ссылку или её целевой объект. Символические ссылки в поддереве назначения не отслеживаются.
Для предоставления пользовательской логики копирования используйте перегрузку, которая принимает copyAction лямбда-выражение.
Параметры
target - путь назначения для рекурсивной копии этого элемента.
onError - функция, определяющая дальнейшие действия при возникновении ошибки. По умолчанию перебрасывает исключение.
followLinks - false для копирования самой символической ссылки, а не её целевого объекта. true для рекурсивной копии целевого объекта символической ссылки.
overwrite - false для выброса исключения, если элемент назначения уже существует. true для перезаписи существующих элементов назначения.
Исключения
NoSuchFileException - если элемент, расположенный по этому пути, не существует.
FileSystemException - если целевой путь является элементом внутри поддерева источника.
FileAlreadyExistsException - если элемент назначения уже существует, и overwrite имеет значение false. Это исключение передаётся в onError для обработки.
IOException - если при копировании возникают какие-либо ошибки. Это исключение передаётся в onError для обработки.
SecurityException - если установлен менеджер безопасности и доступ к элементу в поддереве источника или назначения не разрешен. Это исключение передаётся в onError для обработки.
@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, если некоторые директории по пути к целевому пути отсутствуют, они не будут автоматически созданы. Вы можете использовать следующий подход для обеспечения создания необходимых промежуточных директорий:
sourcePath.copyToRecursively(
destinationPath.apply { parent?.createDirectories() },
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