思路就是首先判定目标目录是否存在,不存在就直接执行移动,存在则遍历其文件,逐一复制到目标目录中,再遍历其子目录,递归执行上述操作。
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace 目录转移test
{
class Program
{
static void Main(string[] args)
{
var 待转移目录 = "c:\\test";
var 转移目标目录 = "c:\\test1";
移动目录(待转移目录, 转移目标目录);
}
private static void 移动目录(string 待转移目录, string 转移目标目录)
{
if (Directory.Exists(转移目标目录))
{
var f = Directory.GetFiles(待转移目录);
foreach (var s in f)
{
File.Copy(s, Path.Combine(转移目标目录, Path.GetFileName(s)), true);
}
var d = Directory.GetDirectories(待转移目录);
foreach (var s in d)
{
移动目录(s, Path.Combine(转移目标目录, Path.GetFileName(s)));
}
Directory.Delete(待转移目录,true);
}
else Directory.Move(待转移目录, 转移目标目录);
}
}
}
希望对你有帮助:)
两种办法解决:
一、
string name=@"c:\test1";
if (Directory.Exists(name))
{
// Delete the target to ensure it is not there.
Directory.Delete(name, true);
}
二、如果目录存在且没有子目录,可以把文件copy过去。File.Copy 方法允许覆盖.
Directory.Move 应该可以的
不知道抛出什么异常?