C# C中的文件夹结构副本

C# C中的文件夹结构副本,c#,file,copy,directory,C#,File,Copy,Directory,我正在创建一个应用程序,在这个应用程序中,我们可以通过网络选择目标计算机,它会将选定的源文件复制到特定文件夹中。本质上,它的目的是在应用服务器上工作,其中一台机器将有多个应用服务器,在本例中是ApacheTomcat 目前,我的代码能够将一个源文件处理到特定的目标。它会对该机器上的所有tomcat文件夹执行此操作MCAT1、tomcat2。。等等 我正在使用directoryinfo选择文件夹列表 DirectoryInfo diTom = new DirectoryInfo(txtTomcat

我正在创建一个应用程序,在这个应用程序中,我们可以通过网络选择目标计算机,它会将选定的源文件复制到特定文件夹中。本质上,它的目的是在应用服务器上工作,其中一台机器将有多个应用服务器,在本例中是ApacheTomcat

目前,我的代码能够将一个源文件处理到特定的目标。它会对该机器上的所有tomcat文件夹执行此操作MCAT1、tomcat2。。等等

我正在使用directoryinfo选择文件夹列表

DirectoryInfo diTom = new DirectoryInfo(txtTomcat.Text);
其中txtTomcat.text是tomcat文件夹的网络路径。然后我使用foreach循环

foreach (DirectoryInfo subDir in diTomDirs)
因此,对于目录信息中的每个tomcat条目,它执行一个简单的File.Copy代码,将文件复制到为每个tomcat指定的文件夹中

现在,我想扩展我的应用程序功能来考虑源文件夹,而不是仅仅文件.< /p> e、 g.我有文件夹A,包含file1.txt和文件夹B。文件夹B依次包含file2.txt和file3.txt。类似的结构也会出现在目标tomcat上,但其他文件夹和文件很少

我想将源文件夹A作为源,它应该执行现有的文件复制代码,但是现在,将文件从源文件夹复制到目标上的相应文件夹,即Asource->Aserver,将文件从Bsource复制到Bserver

我希望我没有说得太让人困惑

我想这将是foreach逻辑,我需要调整,但无法找出如何调整

有什么线索吗

非常感谢,


Abhi

更简单的方法是使用递归函数

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
}

一种选择是使用机器人技术。它比你可能有时间投资的东西更可靠的重试和最佳并行。正如slugseter所指出的,它于2008年发货

我知道很多大公司用它来推出他们的前端服务器

您可以从windows资源工具包工具中获取:


你是说你想要一个递归副本?为什么写这个?为什么不直接调用呢?特别是从Server 2008开始,它随操作系统一起提供?请看Microsoft Sync Framework,可能是重复的,谢谢您的输入。不确定他们是否会同意使用其他工具,因为这个应用程序几乎完成了,我只需要将此功能添加到它。此外,机器人技术是否可以跨平台工作?假设应用程序服务器在linux机器上。你的应用程序可以调用该工具,但不能调用xplat。只有窗户。当然,您只需要插入:File.Copy、Path.GetFileName和DirectoryInfo.Name、anedv DirectoryInfo.Create。IIRC