c#recursion文件夹和文件目录

时间:2012-02-13 16:52:41

标签: c# asp.net directory

我正在尝试检索目录中所有文件夹中的所有文件。

但结果很随机......

我认为foreach错了..

我不明白为什么?

因为在所有文件夹中,我们检查所有文件,然后显示所有文件的链接按钮。但实际上它显示了很多文件夹,两次。

 var DI = new DirectoryInfo("C://inetpub//wwwroot//ClientPortal//Files//")
              .GetDirectories("*.*", System.IO.SearchOption.AllDirectories);

 foreach (System.IO.DirectoryInfo D1 in DI)
 {
     System.IO.FileInfo[] fiArr = D1.GetFiles();

     foreach (System.IO.FileInfo file in fiArr)
     {
         LinkButton lktest = new LinkButton();
         lktest.Text = D1.Name;
         form1.Controls.Add(lktest);
         form1.Controls.Add(new LiteralControl("<br>"));
     }
 }

有人能帮助我吗?

非常感谢!

3 个答案:

答案 0 :(得分:5)

  

显示所有文件的链接按钮

这里你创建的链接按钮的名称设置为目录,当它听起来像你想要的文件(即file.Name而不是D1.Name)

lktest.Text = D1.Name;

答案 1 :(得分:2)

这有帮助吗?

http://www.dreamincode.net/code/snippet1669.htm

public void GetDirStructure(string path)
{
    try
    {
        DirectoryInfo dir = new DirectoryInfo(path);
        DirectoryInfo[] subDirs = dir.GetDirectories();
        FileInfo[] files = dir.GetFiles();
        foreach(FileInfo fi in files)
        {
            Console.WriteLine(fi.FullName.ToString());
        }

        if (subDirs != null)
        {
            foreach (DirectoryInfo sd in subDirs)
            {
                GetDirStructure(path + @"\\" + sd.Name);
            }
        }
    }
    catch(Exception ex)
    {
        Console.WriteLine(ex.Message.ToString());
    }
}

答案 2 :(得分:1)

第一行代码似乎是罪魁祸首:

System.IO.DirectoryInfo[] DI = new System.IO.DirectoryInfo("C://inetpub//wwwroot//ClientPortal//Files//").GetDirectories("*.*", System.IO.SearchOption.AllDirectories);

尝试使用以下内容:

DirectoryInfo[] DI = new DirectoryInfo("C://inetpub//wwwroot//ClientPortal//File//").GetDirectories();