日期:2014-05-18  浏览次数:20495 次

Directory.Delete 问题 帮忙看下~
我想删除某路径下的除了名字为XXX的其他所有文件夹该怎么写啊? 只知道Directory.Delete(path)这样只能删除一个文件夹。


------解决方案--------------------
C# code

            foreach (string dir in Directory.GetDirectories(path))
            {
                if (dir != "XXX")
                    Directory.Delete(dir);
            }

------解决方案--------------------
探讨
C# code
foreach (string dir in Directory.GetDirectories(path))
{
if (dir != "XXX")
Directory.Delete(dir);
}

------解决方案--------------------
Directory.Delete(dir,true);
.NET 2.0
------解决方案--------------------

------解决方案--------------------
Net2.0 3.5已经可以使用

My.Computer.FileSystem.DeleteDirectory("目录", FileIO.DeleteDirectoryOption.DeleteAllContents)

效率更高一些


││博客空间:http://blog.csdn.net/lovingkiss
││资源下载:http://download.csdn.net/user/lovingkiss
││Email:loving-kiss@163.com [MSN也是这个]
││联系方式:Q66840199 项目、聊天、咨询、探讨、统统收费,呵呵......
╚---------------------------------------------------------------------ō*︻$▅▆▇◤ 


------解决方案--------------------
C# code

            foreach (string dir in Directory.GetDirectories(path))
            {
                if (dir != "XXX")
                    Directory.Delete(dir);
            }

------解决方案--------------------
通常是遍历判断删除,.NET 3.5的功能还未用到
------解决方案--------------------
探讨
Directory.Delete(dir,true);

------解决方案--------------------
2.0以前使用Directory确实是必须要循环遍历,参照:

http://www.dlog.cn/windhome/diary/28416685

3.5已经有了成型的操作模式
My.Computer.FileSystem.DeleteDirectory("目录", FileIO.DeleteDirectoryOption.DeleteAllContents) 

2.0里面有没有
My.Computer.FileSystem.DeleteDirectory
我还真的不记得了,呵呵~~
------解决方案--------------------
探讨
2.0以前使用Directory确实是必须要循环遍历,参照:

http://www.dlog.cn/windhome/diary/28416685

3.5已经有了成型的操作模式
My.Computer.FileSystem.DeleteDirectory("目录", FileIO.DeleteDirectoryOption.DeleteAllContents)

2.0里面有没有
My.Computer.FileSystem.DeleteDirectory
我还真的不记得了,呵呵~~

------解决方案--------------------
My对象中的很多类和方法在C#都没有,不过通过添加Microsoft.VisualBasic引用也能使用My对象了~~
------解决方案--------------------
哦,没注意,如果是这样,怎么都需要遍历一下了;
------解决方案--------------------
linq的写法。
C# code
            string path = @"d:\t";
            var q = from p in Directory.GetDirectories(path)
                    where p != (path+"\\"+"t1")//过滤
                    select p;
            foreach (var p in q)
            {
                Response.Write(p + "<br>");
                //Directory.Delete(p);
            }

------解决方案--------------------
探讨
谢谢各位, 要删除文件夹换得吧文件夹下的文件先删除,否则报错“目录不为空”。下面代码是参考网上例子写的,可以完成要求。这样做法在web应用中应该没有问题吧?

VB.NET codePrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadForEachdirAsStringInDirectory.GetDirectories(XXX上级目录路径)Ifdir<>Server.MapPath(XXX上级目录路径)+"XXX"ThenDeleteDir(dirChild(dir))