你google上面搜索treeview看看,因为有用treeview做资源管理器的例子
你看看,要用到递归的,

解决方案 »

  1.   

    Sub SearchFile(MyFolder)
        Set f2 = MyFolder.Files
        For Each f22 In f2
            If Abort Then
                Exit Sub
            Else
                If TxtFile.Text = "*.*" Then
                    frmResult.ListResult.AddItem Space(10) & f22
                ElseIf InStr(1, Fso.GetFileName(f22), TxtFile.Text, vbTextCompare) Then
                    frmResult.ListResult.AddItem Space(10) & f22
                End If
            End If
        Next
    End SubSub GetFolder(FolderStart As String, SubFolderStart As String)    If Right(FolderStart, 1) <> "\" Then
            FolderStart = FolderStart & "\"
        End If
        
        Set f = Fso.GetFolder(FolderStart & SubFolderStart)
        Set fc = f.SubFolders    For Each FolderItem In fc
            If FolderIte = Folder Then
                SearchFile FolderItem
                GetFolder FolderStart & SubFolderStart & "\", FolderItem.Name
            End If
        Next
    End Sub
    这是VB的,可以改成C#的啊!
      

  2.   

    using System;
    using System.Collections;
    using System.IO;
    namespace ConsoleApplication1
    {
    class FileSearcher
    {
    static void Main(string[] args)
    {
    FileSearcher s = new FileSearcher();
    string basepath = @"C:\";
    string filename = "*.txt";
    foreach( string str in s.SearchFile(basepath, filename) )
    {
    Console.WriteLine( str );
    }
    } public ArrayList SearchFile( string path, string filename )
    {
    m_filename = filename;
    m_resultFiles = new ArrayList(); ProcessDirectory( path ); return m_resultFiles;
    } private string m_filename;
    private ArrayList m_resultFiles; public void ProcessDirectory( string path )
    {
    foreach( string str in Directory.GetFiles( path, m_filename ) )
    {
    m_resultFiles.Add( path + str );
    } foreach( string str in Directory.GetDirectories( path ) )
    {
    ProcessDirectory( str );
    }
    }
    }
    }
      

  3.   

    搜索目录里所有文件(包括子目录) 
    http://www.cnblogs.com/jjwwww/archive/2004/09/04/39559.html
      

  4.   

    /// <summary>
    /// 删除目录和其子目录
    /// </summary>
    /// <param name="dir"></param>
    private void Deldir(string dir)
    {
    int i;
    string[] subdirs = Directory.GetDirectories(dir);
    for (i = 0 ; i < subdirs.GetUpperBound(0) + 1; ++i)
    {
    Deldir(subdirs[i]);
    }
    string[] files = Directory.GetFiles(dir);
    FileAttributes fab;
    for (i = 0 ; i < files.GetUpperBound(0) + 1; ++i)
    {
    fab = File.GetAttributes(files[i]);
    File.SetAttributes(files[i],fab & ~FileAttributes.ReadOnly & ~FileAttributes.System);
    File.Delete(files[i]);
    }
    DirectoryInfo di = new DirectoryInfo(dir);
    di.Attributes &= ~FileAttributes.ReadOnly;
    di.Attributes &= ~FileAttributes.System;
    di.Delete(true);
    }
    /// <summary>
    /// 递归调用删除目录操作
    /// </summary>
    private void DelDR(DirectoryInfo di,ArrayList aSel)
    {
    string str = di.Name.ToUpper();
    bool bFind = false;
    for (int i = 0 ; i < aSel.Count; ++i)
    {
    if (str.CompareTo(aSel[i].ToString()) == 0 )
    {
    try 
    {
    // Delete the directory.
    di.Attributes &= ~FileAttributes.ReadOnly;
    di.Attributes &= ~FileAttributes.System;
    di.Delete(true);

    catch (Exception e) 
    {
    string str2 = "无法删除!";

    MessageBox.Show(str2 + e.ToString());

    bFind = true;
    break;
    }
    }
    if (bFind == false)
    {
    foreach(DirectoryInfo folder in di.GetDirectories()) DelDR(folder,aSel);
    }
    }
    private void DelExt(DirectoryInfo di,ArrayList aSel)
    {
    string str ;
    int i,j;
    FileInfo[] fi = di.GetFiles();
    for (j = fi.GetUpperBound(0); j >= 0; --j)
    {
    str = fi[j].Extension.ToUpper();
    for (i = 0 ; i < aSel.Count; ++i)
    {
    if (str.CompareTo(aSel[i].ToString()) == 0 )
    {
    try 
    {
    // Delete the File.
    File.Delete(fi[j].FullName);

    catch (Exception e) 
    {
    string str2 = "无法删除!";

    MessageBox.Show(str2 + e.ToString());

    break;
    }
    }
    }
    foreach(DirectoryInfo folder in di.GetDirectories()) DelExt(folder,aSel);
    }
    private void DelFile(DirectoryInfo di,ArrayList aSel)
    {
    string str ;
    int i,j;
    FileInfo[] fi = di.GetFiles();
    for (j = fi.GetUpperBound(0); j >= 0; --j)
    {
    str = fi[j].Name.ToUpper();
    for (i = 0 ; i < aSel.Count; ++i)
    {
    if (str.CompareTo(aSel[i].ToString()) == 0 )
    {
    try 
    {
    // Delete the File.
    File.Delete(fi[j].FullName);

    catch (Exception e) 
    {
    string str2 = "无法删除!";

    MessageBox.Show(str2 + e.ToString());

    break;
    }
    }
    }
    foreach(DirectoryInfo folder in di.GetDirectories()) DelExt(folder,aSel);
    }
      

  5.   

    上面是我用来删除指定目录比如说Debug、Release或者指定扩展名的几个方法,其中aSel数组中存放的就是特定的目录名或者扩展名。
      

  6.   

    能发给我一份吗?
    [email protected]
      

  7.   

    搜索目录里所有文件(包括子目录) 
    用到两个函数ParseDirectory 和CreatePathList
    void ParseDirectory(string path, string filter)
                    {    
                        string[] dirs = Directory.GetDirectories(path);//得到子目录
                        IEnumerator iter = dirs.GetEnumerator();
                        while(iter.MoveNext())
                        {
                            string str = (string)(iter.Current);
                            ParseDirectory(str, filter);
                        }
                        string[] files = Directory.GetFiles(path, filter);
                        if(files.Length > 0)
                        {
                            m_numFiles += files.Length;
                            m_pathList.Add(files);
                        }
    }
    string[] CreatePathList()
                    {
                        if(m_numFiles <= 0)
                        {
                            return null;
                        }                    string[] str = new string[m_numFiles];
                        int index = 0;                    try
                        {
                            IEnumerator pathIter = m_pathList.GetEnumerator();
                            while(pathIter.MoveNext())
                            {
                                string[] ar = (string[])(pathIter.Current);
                                IEnumerator fileIter = ar.GetEnumerator();
                                while(fileIter.MoveNext())
                                {
                                    str[index] = (string)(fileIter.Current);
                                    ++index;
                                }
                            }
                        }
                        catch(Exception e)
                        {
                            return null;
                        }                    return str;
                    }使用范例:如果要查找的:d目录下所有mp3文件string path="d:\\";    //目录名 也可以用相当路径
    string filter="*.mp3";        //文件类型
     int m_numFiles=0;        //文件总数
     ArrayList m_pathList = new ArrayList();//包含所有文件路径的数组
    string[] files;            //所有文件名
                    
    ParseDirectory(path, "*.mp3");
    files=CreatePathList();        //生成文件名数组
                    if(files == null)
                    {
                        throw new Exception(String.Concat("No file found in ", path));
                    }
    /////////////////////////////////
    这段代码有问题请高手帮忙修改
    如果可以的话把修改好的程序发到
      

  8.   

    private void DelExt(DirectoryInfo di,ArrayList aSel,ArrayList aResult)
    {
    string str ;
    int i,j;
    FileInfo[] fi = di.GetFiles();
    for (j = fi.GetUpperBound(0); j >= 0; --j)
    {
    str = fi[j].Extension.ToUpper();
    for (i = 0 ; i < aSel.Count; ++i)
    {
    if (str.ToUpper().CompareTo(aSel[i].ToString().ToUpper()) == 0 )
    {
    try 
    {
    // Delete the File.
    //File.Delete(fi[j].FullName);
    //将该文件加入到你的数组里即可。
    aResult.Add(fi[j].FullName);

    catch (Exception e) 
    {
    string str2 = "无法删除!";MessageBox.Show(str2 + e.ToString());

    break;
    }
    }
    }
    foreach(DirectoryInfo folder in di.GetDirectories()) DelExt(folder,aSel);
    }
    调用:
    ArrayList al = new ArrayList();
    ArrayList aSel = new ArrayList();
    aSel.Add("MP3");
    DirectoryInfo  di = new DirectoryInfo("C:\",aSel,al);
    al就返回所有C:\下的mp3文件。