如果文件存在,请覆盖它?

use*_*211 1 c# file

我正在创建一个备份文件的应用程序,我需要检查文件是否存在,如果是,则覆盖它.

这是我到目前为止:

private void Copy(string sourceDir, string targetDir)
{
    Directory.CreateDirectory(targetDir);

    foreach (var file in Directory.GetFiles(sourceDir))
    {
        File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)));
        logWindow.AppendText("\nCopying file" + file + "Complete");
    }

    foreach (var directory in Directory.GetDirectories(sourceDir))
    {    
        Copy(directory, Path.Combine(targetDir, Path.GetFileName(directory)));
        logWindow.AppendText("\n" + directory);
    }
Run Code Online (Sandbox Code Playgroud)

Pri*_*rix 5

根据File.Copy你可以简单地定义它被覆盖像这样:

File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)), true)
Run Code Online (Sandbox Code Playgroud)

File.Exists 方法

if (File.Exists(file))
{
    //do something
}
Run Code Online (Sandbox Code Playgroud)

  • +1.请注意,"复制"也会复制属性,因此请注意R/O文件(以及其他权限问题). (3认同)
  • 值得一提的是这里可​​能存在的竞争条件 (2认同)