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 );//清空目录下所有文件(文件夹被保留)
}
}
}
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 );//清空目录下所有文件(文件夹被保留)
}
}
}
相关文章推荐
- C#利用VB的My功能来显示文件拷贝、删除、移动进度
- C# 删除文件夹
- [C#.NET] 利用 DES / AES 演算法加解密
- C# 下利用ICSharpCode.SharpZipLib.dll实现文件/文件夹压缩、解压缩
- C# 删除文件夹
- C# 利用WinRAR (加密)压缩及解压缩 相关文件夹及文件
- C#中删除剪切文件和文件夹
- C#删除和清空文件夹的程序
- C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件
- 用C#操作文件/文件夹(删除,复制,移动)
- 算法复习--------------利用堆栈实现括号匹配
- C# 添加,修改,删除文件夹/文件集合
- 利用bat批处理程序通过DOS命令行删除所有的空文件夹的方法
- C# 删除文件夹、创建文件夹操作
- C#利用WMI实现本地文件夹的共享与取消共享
- C# 利用WinRAR (加密)压缩及解压缩 相关文件夹及文件
- C#文件写入,C#追加文件,C#拷贝文件,C#删除文件 ,C#移动文件 ,C#递归删除文件夹及文件
- C# 删除某文件夹下 过期文件
- C# 添加,修改,删除文件夹/文件集合
- C# 下利用ICSharpCode.SharpZipLib.dll实现文件/文件夹压缩、解压缩