识别复制到源目录中的新文件夹和文件c#

时间:2014-03-30 16:58:00

标签: c# directory

我在目录中有几个文件夹,我需要处理这些文件夹并将文件移动到具有相同文件夹结构的源目录的另一个目录中。

源目录(Dir):

        - folder1            * subfolder1              *文件1              *文件2            * subfolder2              *文件3              *文件4          - 文件夹2            * subfolder3              *文件5              *档案6            * subfolder4              *文件7              *文件8“>

所以这里我需要处理源目录并在处理子文件夹中的所有文件后将每个子文件夹移动到目标。因此,一旦处理了源目录中的所有文件夹,目标就应该具有与源目录相同的目录结构。

所以,我已经实现了上述所有逻辑,但这里的文件夹正在不断复制到源目录中。所以,我也需要处理这些文件夹并移动到目的地。

因此,我需要反复加载源目录以确定是否有任何新文件夹要处理。我还需要跳过我在之前加载的源目录中处理的任何旧文件夹。

以下是我尝试实施的逻辑:

while (i == 0)//loading the source dir again and again to check the new folders
        {  
        DirectoryInfo sourcefolder = new DirectoryInfo(/* path of soure dir */);
        DirectoryInfo[] sourceRreportSubfolders = sourcefolder.GetDirectories();

            foreach (DirectoryInfo dir in sourceRreportSubfolders)
            {
                objFile.RecursiveFiles(dir.FullName); // method to process the folders
            }
        }

我需要实现以下逻辑:

  1. 跳过我处理的上一个文件夹
  2. 确定要处理的新文件夹
  3. 如果最后一个文件夹检查最后一个文件夹是否处理了最后一个文件夹中的所有文件。如果是,则加载源目录以反复检查任何新文件夹。如果不是,请处理这些文件。

1 个答案:

答案 0 :(得分:0)

声明一个变量,如:

List<string> copiedSourceFolders = new List<string>();

每当您遍历源文件夹/子文件夹并复制其所有文件时,请将文件夹路径添加到此列表中。

copiedSourceFolders.Add(processedSourceDir);

每当您遍历源文件夹/子文件夹时,请检查此列表中是否存在路径,然后再继续复制文件。

if (!copiedSourceFolders.Contains(processedSourceDir))
{
 // COPY STUFF.
}