2012-05-31 75 views
0

我有一個目錄目錄不讀書正確

C:\ Kuldeep \ kverma \ kver \

之後,它是由成千上萬的文件夾具有不同的名稱。每個文件夾由不同的Excel文件。我需要閱讀不同文件夾中的每個文件。

我想要從C:\ Kuldeep \ kverma \ kver \ Folder中讀取所有文件夾路徑。

我用下面的代碼用於獲取與路徑的文件夾名..

 string path = @"C:\Kuldeep\kverma\kver\"; 
     DirectoryInfo dir = new DirectoryInfo(path); 
     Console.WriteLine("File Name Size Creation Date and Time"); 
                            Console.WriteLine("========"); 

     foreach (DirectoryInfo dirinfo in dir.GetDirectories()) 
     { 
      String name = dirinfo.Name; 
      String pth = dirinfo.FullName; 
      Console.WriteLine(name, pth); 
     } 

共有10700個文件夾中有C:\ Kuldeep \ kverma \ kver \目錄,但它是隻讀取54文件夾..

請爲我提供讀取文件夾名稱和位置的任何解決方案同時從單個鏡頭中讀取每個文件夾中的文件。

回答

0

嘗試遞歸方法:

namespace ConsoleApplication1 
{ 
    using System; 
    using System.Collections.Generic; 
    using System.IO; 

    class Program 
    { 
     public static IList<DirectoryInfo> dirs; 

     static void Main(string[] args) 
     { 
      dirs = new List<DirectoryInfo>(); 

      var dir = new DirectoryInfo(@"c:\tmp"); 

      GetDirs(dir); 
      Console.WriteLine(dirs.Count); 
     } 

     public static void GetDirs(DirectoryInfo root) 
     { 
      foreach (var directoryInfo in root.GetDirectories()) 
      { 
       dirs.Add(directoryInfo); 
       GetDirs(directoryInfo); 
      } 
     } 
    } 
} 

現在,我不知道什麼隱患可能正因爲如此潛伏(?堆棧溢出異常,訪問被拒絕),所以我會建議在foreach循環中放置一個try..catch塊以幫助您。

+0

感謝:我想 –

+0

這是行不通的。 –

0

如果你想查看每一個子目錄的內容:

// Flatten out the directory structure in to a string array. 
var directoryList = Directory.GetDirectories("<<RootPath>>", "*", SearchOption.AllDirectories); 

foreach (var directory in directoryList) 
{ 
    DirectoryInfo info = new DirectoryInfo(directory); 
} 

有問題的代碼更新編輯:

string path = @"C:\Kuldeep\kverma\kver\"; 
    string[] directoryArray = Directory.GetDirectories(path, "*", SearchOption.AllDirectories); 

    foreach (var directory in directoryArray) 
    { 
     DirectoryInfo dirinfo = new DirectoryInfo(directory); 
     String name = dirinfo.Name; 
     String pth = dirinfo.FullName; 
     Console.WriteLine(name, pth); 
    } 
+0

我認爲這直到.net 2.0纔會出現,所以如果你使用1.1(yuk!)去遞歸回答:) – Andy