我有一个包含几百万行的相当大的文件,需要检查并从文件中删除损坏的行。
我无耻地尝试过File.ReadAllLines
,但没有奏效。然后我尝试流式传输如下行,从原始文件中读取并写入新文件。虽然它完成了这项工作,但它会在几个小时内完成(5+)。我读过关于使用缓冲区的文章,这听起来像是唯一的选择,但我将如何以这种方式保持线路完整性?
解决方案: StreamWriter 移到 while 之外。使用计数代替拆分。
using (FileStream inputStream = File.OpenRead((localFileToProcess + ".txt")))
{
using (StreamReader inputReader = new StreamReader(inputStream, System.Text.Encoding.GetEncoding(1254)))
{
using(StreamWriter writer=new StreamWriter(localFileToProcess,true,System.Text.Encoding.GetEncoding(1254)))
{
while (!inputReader.EndOfStream)
{
if ((tempLineValue = inputReader.ReadLine()).Count(c => c == ';') == 4)
{
writer.WriteLine(tempLineValue);
}
else
incrementCounter();
}
}
}
}