У меня есть довольно большой файл, состоящий из нескольких миллионов строк, и есть необходимость проверить и удалить поврежденные строки из файла.
Я беззастенчиво пробовал File.ReadAllLines
, но это не сработало. Затем я попытался передать строки, как показано ниже, читая из исходного файла и записывая в новый. Пока он выполняет свою работу, он делает это за несколько часов (5+). Я читал об использовании буферов, что звучит как единственный вариант, но как мне таким образом сохранить целостность строки?
Решение. StreamWriter перемещен за пределы while. Вместо split используется count.
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();
}
}
}
}