2014-03-30 33 views
0

我有几个文件夹内我需要处理和移动文件到具有相同的源文件夹结构的目录的目录。确定新的文件夹和文件复制到源目录c#

源目录(DIR):

- folder1中 * subfolder1 *文件1 *文件2 * subfolder2 *文件3 *文件4 -folder 2 * subfolder3 *文件5 *文件6 *子文件夹4 *文件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 
      } 
     } 

我需要实现follwoing逻辑:

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

您的代码是否始终运行,或者您启动它,关闭它,然后重新启动它? –

+0

我第一次启动它,并一次又一次地加载源目录,直到我停止它。这是一个控制台应用程序。 – user3477335

回答

0

像声明一个变量:

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

每当你遍历源文件夹/子文件夹,并将其所有的文件,文件夹路径添加到这个列表。

copiedSourceFolders.Add(processedSourceDir); 

每当你遍历源文件夹/子文件夹,检查路径在此列表中存在与之前的文件复制走在前面。

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

但我们需要检查最后一个文件夹中的文件,因为新文件将被复制到最后一个文件夹中。那么,我们如何检查从以前的目录加载复制的新文件是什么? – user3477335

相关问题