C#.NET 运用递归方法实现自动删除文件夹及文件时,出现的问题~?

[复制链接]
查看11 | 回复2 | 2010-7-6 08:30:12 | 显示全部楼层 |阅读模式
运用递归方法实现了 指定目录下自动删除文件夹及文件的功能。
但是运行时,发现文件夹内的文件删除后不能及时删除这个文件夹,而是
到下一次运行时才判断然后删除已经空的文件夹。
有没有什么方法实现同步的删除文件及文件夹吗?递归是用了但是我的思路大概有误
下面是简单的代码:
///

///pathName: 路径
///pathType:类型
///pathDate: 指定时间 删除
///

///
private void DeleteF(string pathName,string pathType,double pathDate)
{
DateTime dtNow = DateTime.Now;
// 先搜索指定目录下的文件是否,超过预定日期,并予以删除处理
foreach (string MyFile in Directory.GetFiles(pathName, pathType))
{

....

//符合删除条件时

if (... > ....)

{

//删除

File.Delete(MyFile);

}
}
....
....
//搜索指定目录下的文件夹
foreach (FileSystemInfo tempFsi in fsi)
{

// 如果是文件夹

if(....... == ......)

{

....;

...;

....;

//如果指定目录下还有文件夹

if(rootDirs.Length > 0)

{
//指定路径

string pathNameTo = pathName + tempFsi.ToString()+@"\";

..

..
// 如果文件夹为空,文件夹下没有文件夹时

if(...Length == 0

&& ....Length == 0

&& ... > ...)

{
//删除文件夹
Directory.Delete(tempFsi.FullName, false);

}

else

{
//不是就递归这个方法
this.DeleteFile2(pathNameTo,pathType,pathDate);

}

}

}
}
}
因为罗嗦所以求高手们帮忙看看 问题所在,不是评论~
文件不能随意删除,必须符合超过指定时间的文件,予以判断然后再进行删除。文件夹里面如果没有文件,在给以删除。
再次感谢

回复

使用道具 举报

千问 | 2010-7-6 08:30:12 | 显示全部楼层
给你个复制文件的递归 你自己改下private void CopyFiles(string dirFrom, string dirTo)
{
DirectoryInfo dir = new DirectoryInfo(dirFrom);
FileSystemInfo[] fis = dir.GetFileSystemInfos();
if (fis.Length > 0)
{
for (int i = 0; i < FormatsArray.Length; i++)

回复

使用道具 举报

千问 | 2010-7-6 08:30:12 | 显示全部楼层
那没问题,我帮你写下。-----------------------------------------你这种写法,已经算不上递归了,太啰嗦了。递归讲求简练、高效。你的需求,是 “删除某一个目录下满足某个条件的所有文件(包含子目录),如果子目录为空,则删除之” ?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行