简单到复杂:C#拷贝文件的3种方法
2023-04-18 15:54:32 时间
最近遇一个问题,一个程序调用另一个程序的文件,结果另一个程序的文件被占用,使用不了文件。这时候的解决方案就是把另一个程序的文件拷贝到当前程序就可以了。本文介绍用C#拷贝文件的三种方式。
1、Copy
这个是C#比较常用的拷贝文件方法,是File下面的一个方法,这种适用于没有特殊要求的文件拷贝,使用方法如下:
string sourceFile = @"c: emp est001.txt"; string tagretFile = @"c: emp est003.txt"; if (!Directory.Exists(@"c: emp"))//需要判断文件夹是否存在 Directory.CreateDirectory(path); // 如果等于true则覆盖目标目录文件,否则不覆盖 bool isrewrite=true; System.IO.File.Copy(sourcePath, targetPath, isrewrite);
2、CopyTo
如果你有更比较高级的需要可以考虑使用CopyTo的方式拷贝文件,CopyTo 方法可以返回一个 FileInfo 类型,表示复制操作后的新文件信息;而且CopyTo 支持不同的文件系统中复制文件;CopyTo 方法可以使用 FileOptions 枚举来指定操作行为,例如指定是否覆盖目标文件、是否允许在复制期间绕过缓存等等。
string sourceFile = @"c: emp est001.txt"; string tagretFile = @"c: emp est003.txt"; if (!Directory.Exists(@"c: emp"))//需要判断文件夹是否存在 Directory.CreateDirectory(path); // 如果等于true则覆盖目标目录文件,否则不覆盖 bool isrewrite=true; System.IO.File.Copy(sourcePath, targetPath, isrewrite);
3、使用文件流读写来实现Copy
如果你有更高的需求,可以使用文件流的方式来拷贝,代码如下:
uing System.IO; public static void CopyFileUsingFileStream(string sourceFilePath, string destFilePath) { // 创建文件流并读取文件 using (FileStream sourceStream = new FileStream(sourceFilePath, FileMode.Open)) { // 创建新文件流并写入 using (FileStream destStream = new FileStream(destFilePath, FileMode.Create)) { // 创建一个缓冲区来存储读取的数据 byte[] buffer = new byte[1024]; // 读取数据写入到目标文件流 int bytesRead; while ((bytesRead = sourceStream.Read(buffer, 0, buffer.Length)) > 0) { destStream.Write(buffer, 0, bytesRead); } } } } //调用方法 #region string sourceFile = @"e: emp est001.txt"; string tagretFile = @"e: emp est003.txt"; CopyFileUsingFileStream(sourceFile, tagretFile); #endregion
使用文件流的方式拷贝文件有以下几个好处:更高的灵活性:使用文件流可以更灵活地控制读取和写入数据的方式,例如可以自定义缓冲区大小、设置读取和写入的起始位置等等。这些灵活性可以满足更多的需求,而不仅仅是简单的文件拷贝。更高的性能:使用文件流可以获得更高的性能,因为它可以通过缓存读取的数据来减少磁盘 I/O 操作的次数,从而提高读取和写入数据的效率。此外,使用适当大小的缓冲区可以进一步提高性能。更好的资源管理:使用 FileStream 类可以更好地管理资源,因为它实现了 IDisposable 接口,可以在使用完文件流后及时释放资源。这可以避免资源泄漏和系统性能下降的问题。更好的错误处理:使用文件流可以更好地处理错误,例如在读取或写入数据时可能会发生异常,此时可以使用 try-catch 语句来捕获异常并处理错误。这可以提高代码的健壮性和可靠性。
结语
本文介绍了C#拷贝文件的三种方式,Copy、CopyTo和文件流的方法,并列出了他们各自一些特性优点,供大家使用时参考。无论使用哪种方式,都应该考虑到安全性和健壮性。在拷贝文件时,需要确保源文件和目标文件都存在并且具有适当的权限,同时需要考虑到可能出现的错误和异常情况,并进行适当的错误处理。
参考:ChatGPT
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击