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

解决方案 »

  1.   


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

  2.   

    Directory.Delete(dir,true);
    .NET 2.0
      

  3.   

    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 项目、聊天、咨询、探讨、统统收费,呵呵......
    ╚---------------------------------------------------------------------------------------------------------ō*︻$▅▆▇◤ 
      

  4.   


                foreach (string dir in Directory.GetDirectories(path))
                {
                    if (dir != "XXX")
                        Directory.Delete(dir);
                }
    目前.NET提供的方法还不支持过滤性删除,只好用遍历的方法
      

  5.   

    通常是遍历判断删除,.NET 3.5的功能还未用到
      

  6.   

    2.0以前使用Directory确实是必须要循环遍历,参照:http://www.dlog.cn/windhome/diary/284166853.5已经有了成型的操作模式
    My.Computer.FileSystem.DeleteDirectory("目录", FileIO.DeleteDirectoryOption.DeleteAllContents) 2.0里面有没有
    My.Computer.FileSystem.DeleteDirectory
    我还真的不记得了,呵呵~~
      

  7.   

    好像2.0里就有了,不过这个不太符合楼主的要求,楼主是要删除某目录下除了XXX外的所有目录,你这样会将这个目录下所有文件夹都删掉的
      

  8.   


    My.Computer.FileSystem.DeleteDirectory("目录", FileIO.DeleteDirectoryOption.DeleteAllContents) 
    并没有能除了"XXX"外删除其他的参数
      

  9.   

    My对象中的很多类和方法在C#都没有,不过通过添加Microsoft.VisualBasic引用也能使用My对象了~~
      

  10.   

    linq的写法。
                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);
                }
      

  11.   

    谢谢各位, 要删除文件夹换得吧文件夹下的文件先删除,否则报错“目录不为空”。下面代码是参考网上例子写的,可以完成要求。这样做法在web应用中应该没有问题吧?
     Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
               For Each dir As String In Directory.GetDirectories(XXX上级目录路径)
                If dir <> Server.MapPath(XXX上级目录路径)+"XXX" Then
                    DeleteDir(dirChild(dir))
                    Directory.Delete(dir)
                End If
            Next
        End Sub
        Private Sub DeleteDir(ByVal strDir() As String)
            Dim i, j As Int16
            For i = 0 To UBound(strDir)
                File.Delete(strDir(i))
            Next
        End Sub
        Private ReadOnly Property dirChild(ByVal str_path As String) As Array
            Get
                Return Directory.GetFiles(str_path)
            End Get
        End Property