Você precisa escrever todas as linhas que lê no arquivo de saída, mesmo que não as altere.
Algo como:
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);
}
}
Se você deseja executar esta operação no local, a maneira mais fácil é usar um arquivo de saída temporário e, no final, substituir o arquivo de entrada pela saída.
File.Delete("input.txt");
File.Move("output.txt", "input.txt");
(É difícil acertar a execução de operações de atualização no meio do arquivo de texto, pois sempre é difícil ter a substituição do mesmo tamanho, pois a maioria das codificações tem largura variável.)
Edição: em vez de duas operações de arquivo para substituir o arquivo original, melhor usar File.Replace("input.txt", "output.txt", null)
. (Consulte MSDN .)