File.Copy 方法 (System.IO) |
您所在的位置:网站首页 › vba复制文件夹到c盘 › File.Copy 方法 (System.IO) |
将现有文件复制到新文件。 允许覆盖同名的文件。 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 未隐藏。 ArgumentExceptionsourceFileName 或 destFileName 是一个长度为零的字符串,仅包含空格,或者包含一个或多个无效字符。 你可以使用 GetInvalidPathChars() 方法查询无效字符。 - 或 - sourceFileName 或 destFileName 指定目录。 ArgumentNullExceptionsourceFileName 或 destFileName 为 null。 PathTooLongException指定的路径和/或文件名超过了系统定义的最大长度。 DirectoryNotFoundExceptionsourceFileName 或 destFileName 中指定的路径无效(例如,它位于未映射的驱动器上)。 FileNotFoundException未找到 sourceFileName。 IOExceptiondestFileName 存在且 overwrite 为 false。 - 或 - 发生了 I/O 错误。 NotSupportedExceptionsourceFileName 或 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 |