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

来源:互联网 发布:手机vpn软件哪个好 编辑:程序博客网 时间:2024/06/02 01:23

 老师布置了个作业要模拟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 );//清空目录下所有文件(文件夹被保留)

}

}

}

原创粉丝点击