我需要使用最快的方法(在我看来是readalltext)如何从txt文件中读取文本,我不知道如何更正代码:
string[] files = Directory
.GetFiles(@"C:\Users\Wiz\Desktop\test","*.txt", SearchOption.AllDirectories);
var letter = File.ReadAllText(files);
答案 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种技术:
在这种情况下,并行Approch效果最佳,Directory.EnumerateFiles
比Directory.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.
}