public static void CopyFile(string sourceFullPath, string destFullPath, bool overwrite) { long fileLength; UnixFileMode filePermissions; using SafeFileHandle src = SafeFileHandle.OpenReadOnly(sourceFullPath, FileOptions.None, out fileLength, out filePermissions); using SafeFileHandle dst = SafeFileHandle.Open(destFullPath, overwrite ? FileMode.Create : FileMode.CreateNew, FileAccess.ReadWrite, FileShare.None, FileOptions.None, preallocationSize: 0, filePermissions, CreateOpenException); Interop.CheckIo(Interop.Sys.CopyFile(src, dst, fileLength));
public static void CopyFile(string sourceFullPath, string destFullPath, bool overwrite) { long fileLength; Interop.Sys.Permissions filePermissions; using SafeFileHandle src = SafeFileHandle.OpenReadOnly(sourceFullPath, FileOptions.None, out fileLength, out filePermissions); using SafeFileHandle dst = SafeFileHandle.Open(destFullPath, overwrite ? FileMode.Create : FileMode.CreateNew, FileAccess.ReadWrite, FileShare.None, FileOptions.None, preallocationSize: 0, openPermissions: filePermissions, (Interop.ErrorInfo error, Interop.Sys.OpenFlags flags, string path) => CreateOpenException(error, flags, path)); Interop.CheckIo(Interop.Sys.CopyFile(src, dst, fileLength));