当我们需要移动目录时,不能的简单的Directory.Move,这个方法不能支持递归迁移目录
需要我们进行递归进行迁移
void Main()
{
string sourcePath = @"D:\费用报销";
string destinationPath = @"D:\文档\费用报销";
// 确保源路径存在
if (!Directory.Exists(sourcePath))
{
Console.WriteLine("源目录不存在。");
return;
}
// 创建目标目录
Directory.CreateDirectory(destinationPath);
// 递归地复制和删除目录和文件
try
{
MoveDirectoryContentsRecursively(new DirectoryInfo(sourcePath), new DirectoryInfo(destinationPath));
Console.WriteLine("目录及其内容移动成功。");
}
catch (Exception e)
{
Console.WriteLine("移动目录时出错: {0}", e.Message);
}
}
private static void MoveDirectoryContentsRecursively(DirectoryInfo source, DirectoryInfo destination)
{
// 复制所有文件
foreach (FileInfo file in source.GetFiles())
{
file.CopyTo(Path.Combine(destination.FullName, file.Name), true);
}
// 复制所有子目录
foreach (DirectoryInfo subDirectory in source.GetDirectories())
{
DirectoryInfo newDestinationSubDir = destination.CreateSubdirectory(subDirectory.Name);
MoveDirectoryContentsRecursively(subDirectory, newDestinationSubDir);
}
// 删除原始目录和文件 拷贝就不删
//Directory.Delete(source.FullName, true);
}