2015-05-11 2 views
1

Мне нужно прочитать папку, содержащую несколько внутренних папок, которые содержат более 100 xml-файлов. Мне нужно прочитать все эти xml-файлы один за другим. Я использую asp.net C#. Как я могу это достичь.Count Total Folder in asp.net

Для примера: A моя папка, содержащая 1, 2, 3, 4, 5, 6 ... 200 в качестве подпапок. Теперь папка содержит 1a.xml, b.xml, c.xml ... Точно так же папку 2 содержит 1.xml, 2.xml, 3.xml ... Теперь мне нужно прочитать все эти XML-файлы, по одному из каждой папки.

+0

является то, что работа для вас ??? –

+0

Сколько там уровней папок. Если его неограниченно, вам нужно использовать рекурсию – Wize

ответ

0

вы можете использовать Parallel LINQ и делать, как показано ниже

int count = 0; 
    string[] files = null; 
    try 
    { 
     files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories); 
    } 
    catch (UnauthorizedAccessException e) 
    { 
     Console.WriteLine("You do not have permission to access one or more folders in this directory tree."); 
     return; 
    } 

    catch (FileNotFoundException) 
    { 
     Console.WriteLine("The specified directory {0} was not found.", path); 
    } 

    var fileContents = from file in files.AsParallel() 
      let extension = Path.GetExtension(file) 
      where extension == ".xml" 
      let text = File.ReadAllText(file) 
      select new FileResult { Text = text , FileName = file }; //Or ReadAllBytes, ReadAllLines, etc.    

    try 
    { 
     foreach (var item in fileContents) 
     { 
      Console.WriteLine(Path.GetFileName(item.FileName) + ":" + item.Text.Length); 
      count++; 
     } 
    } 
    catch (AggregateException ae) 
    { 
     ae.Handle((ex) => 
      { 
       if (ex is UnauthorizedAccessException) 
       { 
        Console.WriteLine(ex.Message); 
        return true; 
       } 
       return false; 
      }); 
    } 

Пример takem от: https://msdn.microsoft.com/en-us/library/ff462679%28v=vs.110%29.aspx

+0

Thank's Pranay, ее работа для меня. – user3810961

+1

@ user3810961 - сделайте знак ответа как принято и проголосуйте, если он сработает для вас ... –