我正在创建一个应用程序,我们可以通过网络选择目标计算机,它会将选定的源文件复制到特定文件夹中。从本质上讲,它的目的是在一台机器上有多台app服务器的应用服务器上工作,在这种情况下是apache tomcat。
目前,我的代码能够将一个源文件处理到特定目标。它为该机器上的所有tomcat文件夹(tomcat1,tomcat2等等)执行此操作。
我正在使用directoryinfo来选择文件夹列表。
DirectoryInfo diTom = new DirectoryInfo(txtTomcat.Text);
其中txtTomcat.text是tomcat文件夹的网络路径。然后我使用foreach循环
foreach (DirectoryInfo subDir in diTomDirs)
因此,对于目录info中tomcat的每个条目,它执行一个简单的File.Copy代码,复制为每个tomcat指定的文件夹中的文件。
现在,我想扩展我的应用程序功能以考虑源文件夹,而不仅仅是文件。
e.g。我有文件夹A,包含file1.txt和文件夹B.文件夹B又包含file2.txt和file3.txt。类似的结构也会在目标tomcat上退出,但只有很少的其他文件夹和文件。
我想将源文件夹A作为源,它应该执行现有的文件复制代码,但是现在,将文件从源文件夹复制到目标上的相应文件夹,即A(源) - &gt ; A(服务器)和B(源)到B(服务器)的文件。
我希望我没有让它听起来太混乱.. :(
我想这将是我需要调整但不能弄清楚如何的foreach逻辑。
任何线索?
非常感谢,
ABHI
答案 0 :(得分:1)
更简单的方法是使用递归函数。
public static void ProcessDirectory(string targetDirectory)
{
foreach(string fileName in Directory.GetFiles(targetDirectory))
ProcessFile(fileName);
foreach(string subdirectory in Directory.GetDirectories(targetDirectory))
ProcessDirectory(subdirectory);
// Here is called for each directory and sub directory
}
public static void ProcessFile(string path)
{
// Here is called for each file in all subdirectories
}
答案 1 :(得分:0)
一种选择是使用robocopy。它比你可能有时间投资的东西更强大(重试)和最佳(并行)。因为slugseter注意到它在2008年出货。
我认识很多大公司用它来推出他们的前端服务器位......
您可以从Windows资源工具包工具中获取它: