我需要读取包含多个内部文件夹的文件夹,这些文件夹包含100多个xml文件。我需要逐个阅读所有这些xml文件。我正在使用asp.net c#。我怎样才能做到这一点。
例如:A
是我的文件夹,包含1
,2
,3
,4
,5
,{{1} } ... 6
作为子文件夹。
现在,文件夹200
包含1
,a.xml
,b.xml
...类似文件夹c.xml
包含2
,1.xml
,{ {1}} ......
现在我需要从每个文件夹中逐个读取所有这些xml文件。
答案 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