File.ReadLines
可能是你最好的选择,因为它会为你提供IEnumerable
一行文本文件并在你迭代时懒洋洋地读取它们IEnumerable
.然后,您可以使用任何方法搜索你想使用的线(Regex
,Contains
,等),并用它做什么.下面我的例子产生一个线程来搜索该行并将其输出到控制台,但你可以做任何事情.当然,TEST,TEST,TEST在大文件上看你的性能里程.我想如果下面生成的每个单独的线程花费的时间太长,你可以遇到一个线程限制.
IEnumerable<string> lines = File.ReadLines("myLargeFile.txt");
foreach (string line in lines) {
string lineInt = line;
(new Thread(() => {
if (lineInt.Contains(keyword)) {
Console.WriteLine(lineInt);
}
})).Start();
}
Run Code Online (Sandbox Code Playgroud)
编辑:通过我自己的测试,这显然更快:
foreach (string lineInt in File.ReadLines("myLargeFile.txt").Where(lineInt => lineInt.Contains(keyword))) {
Console.WriteLine(lineInt);
}
Run Code Online (Sandbox Code Playgroud)