如题,我想遍历一个目录及其子目录下的文件(相对目录),并生成相应的文件索引链接(HTML格式,需要在一页全部显示)最好有源代码,谢谢

解决方案 »

  1.   

    string[] file = Directory.GetFiles(文件夹路径);
    Dictionary<int, string> pa = new Dictionary<int, string>();
    int i = 1;
    foreach (string str in file)
                    {
                       Dictionary[i]= str;//文件路径
                       i++;
                    }
    Dictionary里存放的是文件对应的路径
      

  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是容器,拷贝我的代码,注意要换一个你自己的容器
    }本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dcsoft/archive/2006/08/21/1103831.aspx
      

  3.   

    谢谢几位
    目前我困惑的还有,如何生成这个HTML页面,头大,小弟初学,请多指教
      

  4.   


            public void ParseDirectory(DirectoryInfo dInfo, StreamWriter sw)
            {
                sw.WriteLine(dInfo.FullName);            foreach (DirectoryInfo d in dInfo.GetDirectories())
                {
                    ParseDirectory(d, sw);
                }            foreach (FileInfo fInfo in dInfo.GetFiles())
                {
                    sw.WriteLine(fInfo.FullName);
                }        }
    主要代码就是这个了,如果你要输出成html文件,可以在sw添加,这是我运行以后的部分路径C:\Inetpub
    C:\Inetpub\AdminScripts
    C:\Inetpub\AdminScripts\adsutil.vbs
    C:\Inetpub\AdminScripts\chaccess.vbs
    C:\Inetpub\AdminScripts\contsrv.vbs
    C:\Inetpub\AdminScripts\contweb.vbs
    C:\Inetpub\AdminScripts\dispnode.vbs
    C:\Inetpub\AdminScripts\disptree.vbs
    C:\Inetpub\AdminScripts\findweb.vbs
    C:\Inetpub\AdminScripts\mkwebdir.vbs
    C:\Inetpub\AdminScripts\pausesrv.vbs
    C:\Inetpub\AdminScripts\pauseweb.vbs
    C:\Inetpub\AdminScripts\startsrv.vbs
    C:\Inetpub\AdminScripts\startweb.vbs
    C:\Inetpub\AdminScripts\stopsrv.vbs
    C:\Inetpub\AdminScripts\stopweb.vbs
    C:\Inetpub\AdminScripts\synciwam.vbs
      

  5.   


    <html>
    <head>
    </head>
    <body>
    <a href="file:///C:/Inetpub" name ="a1">C:\Inetpub</a>
    </body>
    </html>这就是一个简单的html页面,可以用sw直接输出啊sw.WriteLine("<html>");
    sw.WriteLine("<head>");
    ...
      

  6.   

    把测试代码都奉送给你吧,楼上几位存储起来也是可以的,我就直接输出了            FileStream fs = new FileStream("C:/test.html", FileMode.OpenOrCreate);
                StreamWriter sw = new StreamWriter(fs);
                DirectoryInfo dInfo = new DirectoryInfo(this.textBox2.Text.Trim());
                try
                {
                    
                    ParseDirectory(dInfo,sw);
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    sw.Flush();
                    sw.Close();
                }            MessageBox.Show("Done!");