您的位置:首页 > 编程语言 > C#

C#下利用堆栈删除文件夹的算法

2010-11-13 01:39 239 查看
老师布置了个作业要模拟CMD的一些功能~其中做RD命令,即删除某文件夹的时候发现,C#默认的Delete只对空文件夹有效,网上虽然有不少递归算法,但因为跟模拟CMD的其他功能不是很合,所以参考了一下,写了这个算法。原理很简单,就是用堆栈模拟了递归的功能~呵呵

string tFilePath = "C://WINDOWS";//tFilePath 是准备删除的文件夹的路径

Stack st = new Stack ( );//存放目录地址的堆栈

if ( Directory . Exists ( tFilePath ) )

{

//由于Delete()方法仅能用于空目录

//所以利用堆栈模拟递归,清空目录及子目录下所有的文件

//并将所有目录的路径压入堆栈

st . Push ( tFilePath );

while ( st . Count != 0 )

{

string [] tDirectorys = Directory . GetDirectories ( st . Peek ( ) . ToString ( ) );

string [] tFiles = Directory . GetFiles ( st . Peek ( ) . ToString ( ) );

if ( tDirectorys . Length == 0 && tFiles . Length == 0 )//当前目录已为空目录

Directory . Delete ( st . Pop ( ) . ToString ( ) );//删除并在堆栈弹出当前目录

foreach ( var x in tDirectorys )

{

st . Push ( x );//把目录地址压入堆栈

}

foreach ( var x in tFiles )

{

File . Delete ( x );//清空目录下所有文件(文件夹被保留)

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: