c # рекурсивный каталог папок и файлов - PullRequest
2 голосов
/ 13 февраля 2012

Я пытаюсь получить все файлы во всех папках, которые у меня есть в каталоге.

Но результат совершенно случайный ..

Я думаю, что 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 ]

5 голосов
/ 13 февраля 2012

отображает кнопки ссылок всех файлов

Здесь вы создаете кнопки ссылок с именем, установленным для каталога, когда звучит так, как будто вы хотите файл (т.е. файл).Имя вместо D1.Name)

lktest.Text = D1.Name;
2 голосов
/ 13 февраля 2012

Помогает ли это?

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());
    }
}
1 голос
/ 13 февраля 2012

Первая строка кода выглядит как виновник:

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...