2012-02-13 6 views
2

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

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

Я думаю, что Еогеасп неправильно ..

То, что я не понимаю, почему?

Потому что во всех папках мы проверяем все файлы, а затем показываем кнопки ссылок всех файлов. Но на самом деле он отображает много папок, дважды.

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>")); 
    } 
} 

Может кто-нибудь мне помочь?

Большое спасибо!

+0

Такого рода вещи должно быть довольно легко отлаживать если вы находитесь в положении, чтобы прикрепить отладчик ... Просто выполняйте шаг за шагом, и каждый раз, когда вы добавляете новый элемент управления, проверяйте все, чтобы решить, получаете ли вы правильное значение, а если не то, что не так, как вы ожидаете ... – Chris

ответ

5

показать ссылку кнопки всех файлов

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

lktest.Text = D1.Name; 
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()); 
    } 
} 
1

The fi Первая строка кода кажется, что преступник:

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(); 
+0

Почему? ... more characters ... –

+0

Суть заключается в использовании правильной перегрузки метода DirectoryInfo.GetDirectories(). – Bernard

+0

Но почему один ОП использует неправильное и ваше предложение? –

Смежные вопросы