2012-05-31 35 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