如何读取所有txt文件中的所有文本(* .txt)

时间:2016-02-29 12:14:20

标签: c#

我需要使用最快的方法(在我看来是readalltext)如何从txt文件中读取文本,我不知道如何更正代码:

string[] files = Directory
  .GetFiles(@"C:\Users\Wiz\Desktop\test","*.txt", SearchOption.AllDirectories);

var letter = File.ReadAllText(files);

3 个答案:

答案 0 :(得分:2)

File.ReadAllText期待一个文件的路径,但Directory.GetFiles返回一个文件数组。所以你必须使用loop / linq来获取每个文件的文本

string sDir = @"C:\Users\Wiz\Desktop\test";
string[] files = Directory.GetFiles(sDir, "*.txt", SearchOption.AllDirectories);
string[] letters = files.Select(x => File.ReadAllText(x)).ToArray();

答案 1 :(得分:2)

对我来说有趣的是要指出,这是最快的方式,因此我尝试了3种技术:

<强>概述

overview * ~200 Ticks

结论

在这种情况下,并行Approch效果最佳,Directory.EnumerateFilesDirectory.GetFiles快得多(使用模式* .txt搜索并包含子目录)

代码

A - GetFiles和ReadAllText

foreach (var file in Directory.GetFiles("C:\\Program Files (x86)", "*.txt", SearchOption.AllDirectories))
{
   var a = File.ReadAllText(file);
}

B - EnumerateFiles和ReadAllText

foreach (var file in Directory.EnumerateFiles("C:\\Program Files (x86)", "*.txt", SearchOption.AllDirectories))
{
   var a = File.ReadAllText(file);
}

C - 并行方法

var files = Directory.EnumerateFiles("C:\\Program Files (x86)", "*.txt", SearchOption.AllDirectories);
Parallel.ForEach(files,(current) => 
{
    var a = File.ReadAllText(current);
});

随意添加想法,想法,....

答案 2 :(得分:1)

您需要使用循环来读取所有文件,因为ReadAllText一次只能读取一个文件。

foreach (var file in files)
{
    // Do the reading of your file here.
}