copyRecursively
fun File.copyRecursively(
target: File,
overwrite: Boolean = false,
onError: (File, IOException) -> OnErrorAction = { _, exception -> throw exception }
): Boolean
Copies this file with all its children to the specified destination target path. If some directories on the way to the destination are missing, then they will be created.
If this file path points to a single file, then it will be copied to a file with the path target. If this file path points to a directory, then its children will be copied to a directory with the path target.
If the target already exists, it will be deleted before copying when the overwrite parameter permits so.
The operation doesn't preserve copied file attributes such as creation/modification date, permissions, etc.
If any errors occur during the copying, then further actions will depend on the result of the call
to onError(File, IOException)
function, that will be called with arguments,
specifying the file that caused the error and the exception itself.
By default this function rethrows exceptions.
Exceptions that can be passed to the onError
function:
- NoSuchFileException - if there was an attempt to copy a non-existent file
- FileAlreadyExistsException - if there is a conflict
- AccessDeniedException - if there was an attempt to open a directory that didn't succeed.
- IOException - if some problems occur when copying.
Note that if this function fails, then partial copying may have taken place.
Parameters
overwrite
- true
if it is allowed to overwrite existing destination files and directories.
Return false
if the copying was terminated, true
otherwise.