Вам нужно записать все строки, которые вы прочитали, в выходной файл, даже если вы их не меняете.
Что-то вроде:
using (var input = File.OpenText("input.txt"))
using (var output = new StreamWriter("output.txt")) {
string line;
while (null != (line = input.ReadLine())) {
// optionally modify line.
output.WriteLine(line);
}
}
Если вы хотите выполнить эту операцию на месте, то самый простой способ - использовать временный выходной файл и в конце заменить входной файл выходным.
File.Delete("input.txt");
File.Move("output.txt", "input.txt");
(Попытка выполнить операции обновления в середине текстового файла довольно трудна для понимания, потому что всегда иметь замену одинаковой длины сложно, поскольку большинство кодировок имеют переменную ширину.)
РЕДАКТИРОВАТЬ: Вместо двух файловых операций, чтобы заменить исходный файл, лучше использовать File.Replace("input.txt", "output.txt", null)
. (См. MSDN .)