File.Copy 方法 (System.IO)

您所在的位置:网站首页 vba复制文件夹到c盘 File.Copy 方法 (System.IO)

File.Copy 方法 (System.IO)

2023-10-22 19:30| 来源: 网络整理| 查看: 265

将现有文件复制到新文件。 允许覆盖同名的文件。

public: static void Copy(System::String ^ sourceFileName, System::String ^ destFileName, bool overwrite); public static void Copy (string sourceFileName, string destFileName, bool overwrite); static member Copy : string * string * bool -> unit Public Shared Sub Copy (sourceFileName As String, destFileName As String, overwrite As Boolean) 参数 sourceFileName String

要复制的文件。

destFileName String

目标文件的名称。 不能是目录。

overwrite Boolean

如果可以覆盖目标文件,则为 true;否则为 false。

例外 UnauthorizedAccessException

调用方没有所要求的权限。

- 或 -

destFileName 为只读。

- 或 -

overwrite 为 true,destFileName 存在并隐藏,但 sourceFileName 未隐藏。

ArgumentException

sourceFileName 或 destFileName 是一个长度为零的字符串,仅包含空格,或者包含一个或多个无效字符。 你可以使用 GetInvalidPathChars() 方法查询无效字符。

- 或 -

sourceFileName 或 destFileName 指定目录。

ArgumentNullException

sourceFileName 或 destFileName 为 null。

PathTooLongException

指定的路径和/或文件名超过了系统定义的最大长度。

DirectoryNotFoundException

sourceFileName 或 destFileName 中指定的路径无效(例如,它位于未映射的驱动器上)。

FileNotFoundException

未找到 sourceFileName。

IOException

destFileName 存在且 overwrite 为 false。

- 或 -

发生了 I/O 错误。

NotSupportedException

sourceFileName 或 destFileName 的格式无效。

示例

以下示例将文件复制到 C:\archives\2008 备份文件夹。 它使用 方法的两个 Copy 重载,如下所示:

它首先使用 File.Copy(String, String) 方法重载复制文本 (.txt) 文件。 代码演示此重载不允许覆盖已复制的文件。

然后, File.Copy(String, String, Boolean) 它使用 方法重载将图片 (.jpg 文件复制到) 。 代码演示此重载确实允许覆盖已复制的文件。

string sourceDir = @"c:\current"; string backupDir = @"c:\archives\2008"; try { string[] picList = Directory.GetFiles(sourceDir, "*.jpg"); string[] txtList = Directory.GetFiles(sourceDir, "*.txt"); // Copy picture files. foreach (string f in picList) { // Remove path from the file name. string fName = f.Substring(sourceDir.Length + 1); // Use the Path.Combine method to safely append the file name to the path. // Will overwrite if the destination file already exists. File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true); } // Copy text files. foreach (string f in txtList) { // Remove path from the file name. string fName = f.Substring(sourceDir.Length + 1); try { // Will not overwrite if the destination file already exists. File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName)); } // Catch exception if the file was already copied. catch (IOException copyError) { Console.WriteLine(copyError.Message); } } // Delete source files that were copied. foreach (string f in txtList) { File.Delete(f); } foreach (string f in picList) { File.Delete(f); } } catch (DirectoryNotFoundException dirNotFound) { Console.WriteLine(dirNotFound.Message); } let sourceDir = @"c:\current" let backupDir = @"c:\archives\2008" try let picList = Directory.GetFiles(sourceDir, "*.jpg") let txtList = Directory.GetFiles(sourceDir, "*.txt") // Copy picture files. for f in picList do // Remove path from the file name. let fName = f.Substring(sourceDir.Length + 1) // Use the Path.Combine method to safely append the file name to the path. // Will overwrite if the destination file already exists. File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true) // Copy text files. for f in txtList do // Remove path from the file name. let fName = f.Substring(sourceDir.Length + 1) try // Will not overwrite if the destination file already exists. File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName)) // Catch exception if the file was already copied. with | :? IOException as copyError -> printfn $"{copyError.Message}" // Delete source files that were copied. for f in txtList do File.Delete f for f in picList do File.Delete f // Catch exception if the file was already copied. with | :? DirectoryNotFoundException as dirNotFound -> printfn $"{dirNotFound.Message}" Dim sourceDir As String = "c:\current" Dim backupDir As String = "c:\archives\2008" Try Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg") Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt") ' Copy picture files. For Each f As String In picList 'Remove path from the file name. Dim fName As String = f.Substring(sourceDir.Length + 1) ' Use the Path.Combine method to safely append the file name to the path. ' Will overwrite if the destination file already exists. File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), True) Next ' Copy text files. For Each f As String In txtList 'Remove path from the file name. Dim fName As String = f.Substring(sourceDir.Length + 1) Try ' Will not overwrite if the destination file already exists. File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName)) ' Catch exception if the file was already copied. Catch copyError As IOException Console.WriteLine(copyError.Message) End Try Next For Each f As String In txtList File.Delete(f) Next For Each f As String In picList File.Delete(f) Next Catch dirNotFound As DirectoryNotFoundException Console.WriteLine(dirNotFound.Message) End Try 注解

sourceFileName和 destFileName 参数可以指定相对或绝对路径信息。 相对路径信息被解释为相对于当前工作目录。 此方法不支持参数中的通配符。

原始文件的属性保留在复制的文件中。

有关常见 I/O 任务的列表,请参阅 常见 I/O 任务。

另请参阅 Move(String, String) Move(String, String) 文件和流 I/O 从文件读取文本 如何:将文本写入文件 如何:对新建的数据文件进行读取和写入 适用于


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3