2012-08-30 40 views
0

我有一個文件夾叫做OLD。有一個目錄結構裏面想:單向同步兩個文件夾

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

每個文件夾可能是也可能不是文件裏面。

我有一個名爲NEW的文件夾,它具有更新和取決於其內部適當目錄結構的更改。關鍵是它會和OLD一樣。例如:

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

正如你所看到的目錄結構(包括文件夾名稱)相同。我想要NEW中的所有文件替換OLD中的相應文件。

請爲我提供一個起點。

+0

看一看rsync的算法 – tomsv

+0

退房[微軟同步框架(http://msdn.microsoft.com/en-us/sync/bb821992.aspx) – ChrisF

+0

如果有新的文件夾或文件不在OL中d或反之亦然? –

回答

1

我創建了一個文件夾Old結構爲:

古根C:\Old例如。

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

New其中什麼也沒有。

然後跑到控制檯應用程序我做了設置NewRootC:\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); 
    } 
} 
0

您可以使用FileSystemWatcher類來控制OLD目錄中的更改,將它們重複到NEW中。

此外,您也可以將此手錶放置在NEW上,以管理那裏的不需要的訪問。