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:

Note that if this function fails, then partial copying may have taken place.


overwrite - true if it is allowed to overwrite existing destination files and directories.

Return false if the copying was terminated, true otherwise.