File.copy

bool copy(gio.file.File destination, gio.types.FileCopyFlags flags, gio.cancellable.Cancellable cancellable = null, gio.types.FileProgressCallback progressCallback = null)

Copies the file source to the location specified by destination. Can not handle recursive copies of directories.

If the flag [gio.types.FileCopyFlags.Overwrite] is specified an already existing destination file is overwritten.

If the flag [gio.types.FileCopyFlags.NofollowSymlinks] is specified then symlinks will be copied as symlinks, otherwise the target of the source symlink will be copied.

If the flag [gio.types.FileCopyFlags.AllMetadata] is specified then all the metadata that is possible to copy is copied, not just the default subset (which, for instance, does not include the owner, see #GFileInfo).

If cancellable is not null, then the operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the error [gio.types.IOErrorEnum.Cancelled] will be returned.

If progress_callback is not null, then the operation can be monitored by setting this to a #GFileProgressCallback function. progress_callback_data will be passed to this function. It is guaranteed that this callback will be called after all data has been transferred with the total number of bytes copied during the operation.

If the source file does not exist, then the [gio.types.IOErrorEnum.NotFound] error is returned, independent on the status of the destination.

If [gio.types.FileCopyFlags.Overwrite] is not specified and the target exists, then the error [gio.types.IOErrorEnum.Exists] is returned.

If trying to overwrite a file over a directory, the [gio.types.IOErrorEnum.IsDirectory] error is returned. If trying to overwrite a directory with a directory the [gio.types.IOErrorEnum.WouldMerge] error is returned.

If the source is a directory and the target does not exist, or [gio.types.FileCopyFlags.Overwrite] is specified and the target is a file, then the [gio.types.IOErrorEnum.WouldRecurse] error is returned.

If you are interested in copying the #GFile object itself (not the on-disk file), see [gio.file.File.dup].

Parameters

destinationdestination #GFile
flagsset of #GFileCopyFlags
cancellableoptional #GCancellable object, null to ignore
progressCallbackfunction to callback with progress information, or null if progress information is not needed

Returns

true on success, false otherwise.

Throws

[ErrorWrap]