单向同步两个文件夹

时间:2012-08-30 08:22:49

标签: c# directory

我有一个名为OLD的文件夹。里面有一个目录结构,如:

Old  
---DSL  
---------CI  
------------AppFolder1    
------------AppFolder2  
---------------------------FUN2    
--------CA  
------------AppFolder1  

在每个文件夹中,可能有也可能没有文件。

我有一个名为NEW的文件夹,它有更新,并且根据更改,相应的目录结构在其中。关键是它与OLD相同。例如:

NEW  
---DSL  
---------CI  
------------AppFolder2  
---------------------------FUN2  
--------CA    

您可以看到目录结构(包括文件夹名称)相同。我希望NEW中的所有文件都替换OLD中的相应文件。

请为我提供一个起点。

2 个答案:

答案 0 :(得分:1)

我创建了一个文件夹Old,其结构为:

例如,

旧根C:\Old

-Old
--CI
---AppFolder1
---AppFolder2

New并没有任何内容。

然后运行我创建的控制台应用,将NewRoot设置为C:\New并获得:

-New
--CI
---AppFolder1
---AppFolder2

不确定这是否是您正在寻找的东西 - 如果不建议您希望以不同的方式做什么:)

private static void SyncDirectories(string oldRoot, string newRoot)
{
  CreateDirectoriesRecursive(Directory.GetDirectories(oldRoot), newRoot);
}
private static void CreateDirectoriesRecursive(string[] oldDirectories, string root)
{
  foreach (string oldDirectory in oldDirectories)
  {
    string directoryToCreate = root + @"\" + new DirectoryInfo(oldDirectory).Name;
    if (!Directory.Exists(directoryToCreate))
      Directory.CreateDirectory(directoryToCreate);
    if (Directory.GetDirectories(oldDirectory).Count() > 0)
      CreateDirectoriesRecursive(Directory.GetDirectories(oldDirectory), directoryToCreate);
  }
}

答案 1 :(得分:0)

您可以使用FileSystemWatcher类来控制OLD目录中的更改,将它们重复到新目录中。

此外,您也可以将此手表放在NEW上,以管理不必要的访问权限。