2011-10-22 71 views
0

我正在創建一個應用程序,我們可以通過網絡選擇目標機器,並將選定的源文件複製到特定文件夾中。本質上,它打算在單個機器將具有多個應用程序服務器的應用程序服務器上工作,在這種情況下爲apache tomcat。C中的文件夾結構副本#

目前,我的代碼能夠處理一個源文件到特定的目的地。它爲那臺機器上的所有tomcat文件夾(tomcat1,tomcat2 ..等)執行它。

我正在使用directoryinfo來選擇文件夾列表。

DirectoryInfo diTom = new DirectoryInfo(txtTomcat.Text); 

其中txtTomcat.text是tomcat文件夾的網絡路徑。然後我使用foreach循環

foreach (DirectoryInfo subDir in diTomDirs) 

因此,對於目錄信息的tomcat的每個條目,執行一個簡單的File.Copy代碼,拷貝每個Tomcat的指定文件夾中的文件。

現在,我想擴展我的應用程序功能來考慮源文件夾,而不是僅僅文件。

例如我有文件夾A,包含file1.txt和文件夾B.文件夾B又包含file2.txt和file3.txt。類似的結構也會在目標tomcat上退出,但是其他文件夾和文件很少。

我想給源文件夾A作爲源,它應該執行文件複製的現有代碼,但現在將文件從源文件夾複製到目標文件夾,即A(源) - > A(服務器)和B(源)到B(服務器)的文件。

我希望我沒有讓這聽起來太混亂.. :(

我想這將是我需要調整,但無法弄清楚如何在foreach邏輯。

任何線索?

非常感謝,

ABHI

+0

你是說你想遞歸複製? –

+1

爲什麼寫這個?爲什麼不只是調用[Robocopy](http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx)(尤其是從Server 2008開始隨附的操作系統)? – slugster

+0

看看微軟同步框架 – ja72

回答

1

更簡單的方法是使用遞歸函數。

​​
+0

當然你只需插入:File.Copy,Path.GetFileName和DirectoryInfo.Name,anedv DirectoryInfo.Create。 (IIRC) –

0

一種選擇是使用robocopy。它比你可能有時間投資的東西更強大(重試)和最佳(平行)。正如slugseter指出它在2008年出貨。

我已經知道許多大公司使用它來推出他們的前端服務器位...

您可以從Windows資源工具包獲得它:

http://www.microsoft.com/download/en/details.aspx?id=17657

+0

感謝您的意見。不知道他們是否會同意使用其他工具,因爲這個應用程序幾乎完成,我只需要添加此功能。另外,Robocopy是否可以跨平臺工作?說應用程序服務器是在一個Linux機器上.. – abhi

+0

你的應用程序可以調用該工具 - 但不是xplat。只是窗戶。應該澄清答案。 – bryanmac