2011-10-22 73 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