Мне нужно удалить определенную строку из текстового файла. Как это сделать наиболее эффективно? Файл может быть потенциально большим (более миллиона записей).
ОБНОВЛЕНИЕ: ниже приведен код, который я использую в настоящее время, но я не уверен, что он хороший.
internal void DeleteMarkedEntries() {
string tempPath=Path.GetTempFileName();
using (var reader = new StreamReader(logPath)) {
using (var writer = new StreamWriter(File.OpenWrite(tempPath))) {
int counter = 0;
while (!reader.EndOfStream) {
if (!_deletedLines.Contains(counter)) {
writer.WriteLine(reader.ReadLine());
}
++counter;
}
}
}
if (File.Exists(tempPath)) {
File.Delete(logPath);
File.Move(tempPath, logPath);
}
}