C#中如何将文件从一个目录复制粘贴到另一个目录
C# 任意格式文件复制实现方案
认知误区澄清
你之前对File.Copy方法的两个认知是错误的:
- 不存在格式限制:
File.Copy是字节级的文件操作方法,不会解析文件内容,和文件扩展名、文件格式完全无关,txt、docx、pptx、压缩包、图片、可执行程序等所有格式的文件都可以正常处理。 - 是完整文件复制:该方法会完整复制源文件的全部二进制数据,和你在系统资源管理器中手动复制粘贴得到的文件完全一致,不是仅复制文本内容。只要源文件本身没有损坏,复制后的文件可以正常打开使用。
基础实现代码
首先需要引入IO命名空间:
using System.IO;
核心复制逻辑代码:
// 配置源文件路径、目标目录路径 string sourcePath = @"C:\工作文档\季度汇报.pptx"; // 替换为实际源文件全路径 string targetDirectory = @"D:\文件备份\2024Q3\"; // 替换为实际目标目录路径 // 前置校验 if (!File.Exists(sourcePath)) { throw new FileNotFoundException("指定的源文件不存在", sourcePath); } // 目标目录不存在时自动创建 if (!Directory.Exists(targetDirectory)) { Directory.CreateDirectory(targetDirectory); } // 拼接目标文件完整路径,自动保留源文件的文件名和扩展名 string targetPath = Path.Combine(targetDirectory, Path.GetFileName(sourcePath)); // 执行复制操作,第三个参数为true时表示允许覆盖目标路径下的同名文件 File.Copy(sourcePath, targetPath, overwrite: true);
补充说明
- 路径处理优先使用
Path类提供的Combine、GetFileName等方法,不要手动拼接路径字符串,避免跨系统运行时出现路径分隔符不兼容的问题。 - 如果需要复制GB级别的大文件、显示复制进度,可以基于
FileStream实现分块读写,底层逻辑和File.Copy一致,都是逐字节复制二进制数据,同样不限制文件格式。 File.Copy默认不会复制文件的创建时间、访问权限、加密属性等扩展元数据,如果需要保留这些信息,可以在复制完成后通过FileInfo类手动同步对应属性。
内容的提问来源于stack exchange,提问作者Leo Park
相关产品推荐
相关产品推荐

