查询某个目录下所有的文件,以及文件夹,分类显示.比如遇到,文件夹,要继续显示当前文件夹内所有的内容,
如此循环,生成的结果 分类

解决方案 »

  1.   

    这有一个单一层的,foreach (FileInfo fi in new System.IO.DirectoryInfo(@"H:\CauseEnvironment\ExperimentsRoom\VS2005_Projects\TestRoom_200801_3\TestRoom1\").GetFiles())
                {
                    Console.WriteLine(fi.Name);                
                }
      

  2.   

    public ArrayList al=new ArrayList();
    //我把ArrayList当成动态数组用,非常好用
    public void GetAllDirList(string strBaseDir)
    {
        DirectoryInfo di=new DirectoryInfo(strBaseDir);
        DirectoryInfo[] diA=di.GetDirectories();
       for(int i=0;i<diA.Length;i++)
        {
         al.Add(diA[i].FullName);
        //diA[i].FullName是某个子目录的绝对地址,把它记录在ArrayList中
         GetAllDirList(diA[i].FullName);
        //注意:递归了。逻辑思维正常的人应该能反应过来
        }
    }最后,如何把所有目录信息从ArrayList中取出来呢?如下:
    for(int i=0;i<al.Count;i++)
    {
         textBox1.AppendText(al[i].ToString()+" ");
        //textBox1是容器,拷贝我的代码,注意要换一个你自己的容器
    }
      

  3.   


    public System.Windows.Forms.TreeNode FindAll(总文件夹 根文件夹,TreeNode Result)
    {
    Result.Nodes.Add(new System.Windows.Forms.TreeNode(根文件夹.Name));
    foreach(文件夹 文件夹1 in 根文件夹)
    {
    if(文件夹1.有文件夹)
    {
    this.FindAll(文件夹1);
    }
    else
    {
    foreach(文件 文1 in 文件夹1)
    {
    Result.Nodes.Add(new System.Windows.Forms.TreeNode(文1.Name));
    }
    }
    }
    }没有测试,应该就是这个逻辑吧
      

  4.   

    写错了,不好意思........ public void FindAll(总文件夹 根文件夹,TreeNode Result)
    {
    Result.Nodes.Add(new System.Windows.Forms.TreeNode(根文件夹.Name));
    foreach(文件夹 文件夹1 in 根文件夹)
    {
    if(文件夹1.有文件夹)
    {
    this.FindAll(文件夹1,Result);
    }
    else
    {
    foreach(文件 文1 in 文件夹1)
    {
    Result.Nodes.Add(new System.Windows.Forms.TreeNode(文1.Name));
    }
    }
    }
    }
      

  5.   

    class Program {
    static void Main(string[] args) {
    FileList(@"c:\");
    } public static void FileList(string FilePath) {
    foreach (FileSystemInfo var in new System.IO.DirectoryInfo(FilePath).GetFileSystemInfos()) {
    if (var is DirectoryInfo) {
    Console.WriteLine("文件夹---------------------------------------" + var.Name);
    FileList(var.FullName);
    } else 
    Console.WriteLine("文件\t" + var.Name);
    }
    }
    }
    问题的关键是,怎么分类文件是哪个文件夹下的
      

  6.   

    private void AddDirectories(TreeNode node)   
    {
    try
    {                                      
    DirectoryInfo dir=new DirectoryInfo(GetPathFromNode(node));  DirectoryInfo [] e=dir.GetDirectories();
    for(int i=0;i<e.Length;i++)
    {
    string name=e[i].Name;
    if(!name.Equals(".")&&!name.Equals(".."))         //判断一下
    {
    node.Nodes.Add(new TreeNode(name));        //再add
    }
    }
    }
    catch(Exception e)
    {
    MessageBox.Show(e.Message);
    }
    }
    private string GetPathFromNode(TreeNode node)  //递归 产生节点路径  返string
    {
    if(node.Parent==null)
    return node.Text;

    return Path.Combine(GetPathFromNode(node.Parent),node.Text);  //递归
    }
      

  7.   

    http://freep.cn/p.aspx?u=v20__p_0801211234304464_0.jpg 
    效果
      

  8.   

        protected void Button1_Click ( object sender, EventArgs e )
        {
            string path = "E:\\hehe";
            string filter = "*.*";
            ParseDirectory ( path, filter );        for ( int i = 0; i < m_paths.Count; i++ )
            {
                string filePath = ( string ) m_paths [ i ];
                Response.Write ( filePath );
                Response.Write ( "<br>" );
            }
        }
        protected void ParseDirectory ( string path, string filter )
        {
            string[] dirs = Directory.GetDirectories ( path );
            IEnumerator itorDirs = dirs.GetEnumerator ();
            while( itorDirs.MoveNext () )
            {
                string strDir = (string)itorDirs.Current;
                ParseDirectory ( strDir, filter );
            }        string[] files = Directory.GetFiles ( path, filter );
            if ( files.Length > 0 )
            {
                m_numFiles += files.Length;
                IEnumerator itorFiles = files.GetEnumerator ();
                while ( itorFiles.MoveNext () )
                {
                    string strFile = ( string ) itorFiles.Current;
                    m_paths.Add( strFile );
                }
            }
        }
        protected int m_numFiles = 0;
        protected ArrayList m_paths = new ArrayList ();