例如,我有两个目录同时拥有相同的文件,当我在第一个目录中重命名该文件时,它也应该在第二个目录中重命名。如果文件在第二个目录中重命名,我不希望它在第一个目录中重命名。所以只有一种方式。现在人们使用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));
}
我在这里想了三件事。
答案 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));