在asp.net中计算总文件夹数

时间:2015-05-11 10:24:56

标签: asp.net

我需要读取包含多个内部文件夹的文件夹,这些文件夹包含100多个xml文件。我需要逐个阅读所有这些xml文件。我正在使用asp.net c#。我怎样才能做到这一点。

例如:A是我的文件夹,包含12345,{{1} } ... 6作为子文件夹。 现在,文件夹200包含1a.xmlb.xml ...类似文件夹c.xml包含21.xml,{ {1}} ...... 现在我需要从每个文件夹中逐个读取所有这些xml文件。

1 个答案:

答案 0 :(得分:0)

您可以使用并行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;
            });
    }

示例来自:https://msdn.microsoft.com/en-us/library/ff462679%28v=vs.110%29.aspx