'File.Copy'不会覆盖文件

Cap*_*mic 43 .net c#

使用以下代码,我试图覆盖文件,如果它存在.Currenly它抛出IOException.我该如何解决这个问题?

File.Copy(filePath, newPath);
Run Code Online (Sandbox Code Playgroud)

Cod*_*aos 124

使用

File.Copy(filePath, newPath, true);
Run Code Online (Sandbox Code Playgroud)

第三个参数是覆盖,因此如果将其设置为true,则将覆盖目标文件.

请参阅:MSDN中的File.Copy

  • 对于"浮动bool",我遵循规则始终将它们用作命名参数以便清晰File.Copy(filePath,newPath,overwrite:true); (8认同)

dav*_*soa 18

此函数有一个包含第三个参数的重载.此参数称为"覆盖".如果您通过true,只要该文件不是只读文件,它就会被覆盖.

  • Read-Only属性非常好用. (4认同)

blo*_*art 7

然后调用重载

File.Copy(filePath, newPath, true);
Run Code Online (Sandbox Code Playgroud)


jas*_*son 5

然后使用其他File.Copy(string, string, boolean)。第三个参数指示是否覆盖目标文件(true如果存在)(如果要覆盖,false否则)。

但是您期望什么?如果该函数旨在在目标文件存在时抛出,则需要找到解决该问题的方法。所以:

  1. 在文档或Intellisense中搜索符合您要求的重载。
  2. 除非存在,File.Copy(string, string)否则请创建一个包装器以删除该目标文件。


Cod*_*lla 5

MSDN中,您可以执行以下操作:

File.Copy(filePath, newPath, true);
Run Code Online (Sandbox Code Playgroud)


els*_*sni 5

File.Copy(filePath, newPath, bool overwrite)
Run Code Online (Sandbox Code Playgroud)

可以。


Sha*_*bar 5

这可以帮助您:

我用这个并且有效

File.Copy(src,des,true); //(string source, string destination, bool overwrite)
Run Code Online (Sandbox Code Playgroud)

参考 (MSDN):File.Copy 方法(字符串、字符串、布尔值)