使用C#将图像从梯形图子文件夹移动到主文件夹

时间:2014-03-29 08:32:29

标签: c#

在我的项目中,我必须移动位于子文件夹中的主文件夹中的文件。下面的代码仅移动第一个和第二个子文件夹文件。如何将所有子文件夹文件移动到主文件夹。

致电功能 -

MoveFilesToMain(@"F:\Test\New folder", @"F:\Test");

功能 -

 public static void MoveFilesToMain(string sourceDirName, string destDirName)
    {
        DirectoryInfo dir = new DirectoryInfo(sourceDirName);
        DirectoryInfo[] dirs = dir.GetDirectories();

        FileInfo[] files = dir.GetFiles();
        foreach (FileInfo file in files)
        {          
            File.Move(Path.Combine(sourceDirName, file.Name), Path.Combine(destDirName, file.Name));
        }

        foreach (DirectoryInfo subdir in dirs)
        {
            FileInfo[] files1 = subdir.GetFiles();
            foreach (FileInfo file in files1)
            {                
                File.Move(Path.Combine(subdir.FullName, file.Name), Path.Combine(destDirName, file.Name));
            }
        }
    }

以下标记的文件夹文件未移动。

enter image description here

2 个答案:

答案 0 :(得分:2)

一点点的递归应该可以解决问题。

基本上对于给定的源目录,我们将文件复制到dest目录中。然后迭代源目录中的每个子目录并递归地重复该过程。

public static void MoveFilesToMain(string sourceDirName, string destDirName)
    {
        DirectoryInfo dir = new DirectoryInfo(sourceDirName);
        DirectoryInfo[] dirs = dir.GetDirectories();

        FileInfo[] files = dir.GetFiles();

        if (files.Length == 0 && dirs.Length == 0)
        {
          Directory.Delete(sourceDirName, false);
          return;
        }

        foreach (FileInfo file in files)
        {          
            File.Move(Path.Combine(sourceDirName, file.Name), Path.Combine(destDirName, file.Name));
        }

        foreach (DirectoryInfo subdir in dirs)
        {
          MoveFilesToMain(subdir.FullName, destDirName)
        }
    }

答案 1 :(得分:-1)

试试这个:

DirectoryInfo[] dirs = dir.GetDirectories("*",SearchOption.AllDirectories);