当前位置: 首页 > news >正文

C#中File类的Copy()方法或FileInfo类的CopyTo()方法的参数overwrite取false和true的区别

当调用 `System.IO.File.Copy` 方法时,第三个参数 `overwrite` 控制着如果目标位置已经存在同名文件的情况下如何处理。

1、当 `overwrite` 设置为 `true`

在这种情况下,即使目标路径下已经有相同名称的文件,该方法也会无条件地覆盖现有的文件。这不会引发异常,并且会直接替换旧文件的内容。

string sourceFile = "C:\\tmp\\sourceFile.txt";//两种表示文件路径的方法
string destFile = @"C:\tmp\destFile.txt";// 将会覆盖 test.txt 文件中的内容
// 1、File类的Copy()方法
System.IO.File.Copy(sourceFile, destFile, true);// 2、FileInfo类的CopyTo()方法
FileInfo finfo = new FileInfo(sourceFile);
finfo.CopyTo(destFile ,true);

2、当 `overwrite` 设置为 `false`

此时,若目标路径中已有同名文件,则会发生异常 (`IOException`),因为不允许覆盖现有文件。此行为有助于防止意外的数据丢失或破坏。

string sourceFile = "C:\\tmp\\sourceFile.txt";//两种表示文件路径的方法
string destFile = @"C:\tmp\destFile.txt";
string destFileInfo = @"C:\tmp\destFileInfo.txt";// 若 test.txt 已经存在,则抛出 IOException
// 1、File类的Copy()方法
try
{System.IO.File.Copy(sourceFile, destFile, false);
}
catch (System.IO.IOException ex)
{Console.WriteLine($"无法复制文件: {ex.Message}");
}// 2、FileInfo类的CopyTo()方法
try
{FileInfo finfo = new FileInfo(sourceFile);finfo.CopyTo(destFileInfo, false);
}
catch (System.IO.IOException ex)
{Console.WriteLine($"无法复制文件: {ex.Message}");
}
Console.ReadLine();

3、测试程序

分别测试overwrite不同只与文件是否存在,可以分成四种情况

using System;
using System.IO;
using System.Windows;namespace Test07
{class Program{static void Main(string[] args){FileInfo finfo = new FileInfo("sourceFile.txt");         //实例化FileInfo对象//overwrite:是否存在=1:1=TRUE:Existtry{finfo.CopyTo("destFile_11.txt", overwrite: true);}catch (Exception ex){MessageBox.Show(ex.Message);//简洁版报错MessageBox.Show(ex.ToString());//详细版报错}//overwrite:是否存在=0:1=false:Existtry{finfo.CopyTo("destFile_01.txt", overwrite: false);}catch (Exception ex){MessageBox.Show(ex.Message);MessageBox.Show(ex.ToString());}//overwrite:是否存在=1:0=TRUE:NotExisttry{finfo.CopyTo("destFile_10.txt", overwrite: true);}catch (Exception ex){MessageBox.Show(ex.Message);MessageBox.Show(ex.ToString());}//overwrite:是否存在=0:0=false:NotExisttry{finfo.CopyTo("destFile_00.txt", overwrite: false);}catch (Exception ex){MessageBox.Show(ex.Message);MessageBox.Show(ex.ToString());}Console.ReadLine();}}
}

3.1、程序运行前

..\bin\Debug路径下的文件

①源文件【sourceFile.txt】,其内容为九九乘法表

1*1=1
1*2=2, 2*2=4
1*3=3, 2*3=6, 3*3=9
1*4=4, 2*4=8, 3*4=12, 4*4=16
1*5=5, 2*5=10, 3*5=15, 4*5=20, 5*5=25
1*6=6, 2*6=12, 3*6=18, 4*6=24, 5*6=30, 6*6=36
1*7=7, 2*7=14, 3*7=21, 4*7=28, 5*7=35, 6*7=42, 7*7=49
1*8=8, 2*8=16, 3*8=24, 4*8=32, 5*8=40, 6*8=48, 7*8=56, 8*8=64
1*9=9, 2*9=18, 3*9=27, 4*9=36, 5*9=45, 6*9=54, 7*9=63, 8*9=72, 9*9=81

 ②目标文件【destFile_01.txt】,其内容为文件名

 ②目标文件【destFile_11.txt】,其内容为文件名

3.2、程序运行中

3.3、程序运行后

..\bin\Debug路径下的文件

 参考

清华大学出版社-图书详情-《C#从入门到精通(第6版)》

叩响C#之门 (豆瓣)

C知道-开发者的首选AI搜索引擎

http://www.lryc.cn/news/539321.html

相关文章:

  • 力扣 买卖股票的最佳时机
  • 蚁剑(AutSword)的下载安装与报错解决
  • 【全栈开发】----Mysql基本配置与使用
  • Spring Boot项目的基本设计步骤和相关要点介绍
  • 【Spring快速入门】不断更新...
  • nodejs版本管理,使用 nvm 删除node版本,要删除 Node.js 的某个版本详细操作
  • HTML之JavaScript DOM(document)编程处理事件
  • 5.【线性代数】—— 转置,置换和向量空间
  • 移动通信发展史
  • Python MoviePy 视频处理全攻略:从入门到实战案例
  • uniapp webview嵌入外部h5网页后的消息通知
  • macos安装jmeter测试软件
  • 【virtiofs】ubuntu24.04+qemu7.0调试virtiofs
  • DeepSeek 和 ChatGPT 在特定任务中的表现:逻辑推理与创意生成
  • MoE硬件部署
  • MYSQL中的性能调优方法
  • Day48(补)【AI思考】-设计模式三大类型统一区分与记忆指南
  • 公牛充电桩协议对接单车汽车平台交互协议外发版
  • 大语言模型内容安全的方式有哪些
  • 【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑩】
  • Android WindowContainer窗口结构
  • 从零到一实现微信小程序计划时钟:完整教程
  • moveable 一个可实现前端海报编辑器的 js 库
  • wangEditor 编辑器 Vue 2.0 + Nodejs 配置
  • DeepSeek R1生成图片总结2(虽然本身是不能直接生成图片,但是可以想办法利用别的工具一起实现)
  • x86平台基于Qt+opengl优化ffmpeg软解码1080P视频渲染效率
  • 机器学习入门-读书摘要
  • 前端【技术方案】重构项目
  • 大语言模型简史:从Transformer(2017)到DeepSeek-R1(2025)的进化之路
  • RabbitMQ服务异步通信