在我的项目中,我必须移动位于子文件夹中的主文件夹中的文件。下面的代码仅移动第一个和第二个子文件夹文件。如何将所有子文件夹文件移动到主文件夹。
致电功能 -
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));
}
}
}
以下标记的文件夹文件未移动。
答案 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);