C#将文件重命名为与其他目录中的文件相同的名称

时间:2013-11-20 10:08:07

标签: c#

例如,我有两个目录同时拥有相同的文件,当我在第一个目录中重命名该文件时,它也应该在第二个目录中重命名。如果文件在第二个目录中重命名,我不希望它在第一个目录中重命名。所以只有一种方式。现在人们使用File.Move在同一目录中重命名,但这对我不起作用,因为我不希望文件从第一个目录中消失。所以我认为我应该使用Copy,但问题是,如果它复制第二个目录有2个文件。 1具有旧名称(因为它已经存在)+第一个目录中的文件副本。所以我想我必须删除第二个目录中的旧文件,但由于某种原因,这对我不起作用。它不会删除旧文件。

这是我的代码:

private void fileSystemWatcher1_Renamed(object sender, RenamedEventArgs e)
{
    String source = ConfigurationManager.AppSettings[@"Directory1"]; // defined this in the app config
    String target = ConfigurationManager.AppSettings[@"Directory2"];
    filepath = Path.Combine(source, e.Name);
    veryoldname = Path.GetFileName(filepath);

    File.Delete(Path.Combine(target, veryoldname));
    File.Copy(filepath, Path.Combine(target, e.Name)); 
}

我在这里想了三件事。

  1. 这是根据不同目录中的文件重命名文件的最佳方法吗?
  2. 如果没有,我应该怎么做?
  3. 我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

以下是评论讨论的回答:

变化:

veryoldname = Path.GetFileName(filepath);

要:

veryoldname = e.OldName;

并改变:

File.Delete(Path.Combine(target, veryoldname));
File.Copy(filepath, Path.Combine(target, e.Name)); 

要:

File.Move(Path.Combine(target,veryoldname),Path.Combine(target,e.Name));