首页 新闻 会员 周边 捐助

c#操纵目录转移的问题!!!有类似经验的朋友们进来瞅瞅,给点建议吧

0
悬赏园豆:10 [已解决问题] 解决于 2009-09-11 19:45

 例如:c:\\test 下的内容转移到c:\\test1  注意:c:\\test1是已经存在的

我所知的:Directory.Move和DirectoryInfo的moveto都会抛出异常。请问有没有其他的方法?

专职天使的主页 专职天使 | 初学一级 | 园豆:85
提问于:2009-09-10 19:31
< >
分享
最佳答案
0

思路就是首先判定目标目录是否存在,不存在就直接执行移动,存在则遍历其文件,逐一复制到目标目录中,再遍历其子目录,递归执行上述操作。

代码:

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(待转移目录, 转移目标目录);
}
}
}

希望对你有帮助:)

收获园豆:10
斯克迪亚 | 老鸟四级 |园豆:4124 | 2009-09-11 13:51
正解!
专职天使 | 园豆:85 (初学一级) | 2009-09-11 19:44
其他回答(2)
0

两种办法解决:

一、

 

string name=@"c:\test1";
if (Directory.Exists(name))
{
// Delete the target to ensure it is not there.
Directory.Delete(name, true);
}

 


二、如果目录存在且没有子目录,可以把文件copy过去。File.Copy 方法允许覆盖.

邀月 | 园豆:25475 (高人七级) | 2009-09-10 19:50
0

Directory.Move 应该可以的

不知道抛出什么异常?

Mr雨 | 园豆:1199 (小虾三级) | 2009-09-10 20:42
当然抛出文件已存在啊
支持(0) 反对(0) 专职天使 | 园豆:85 (初学一级) | 2009-09-11 09:23
Directory.Move(@"c:\test\", @"c:\test1\test")
支持(0) 反对(0) Mr雨 | 园豆:1199 (小虾三级) | 2009-09-11 15:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册