Quero anexar linhas ao meu arquivo. Estou usando um StreamWriter:
StreamWriter file2 = new StreamWriter(@"c:\file.txt");
file2.WriteLine(someString);
file2.Close();
A saída do meu arquivo deve estar várias strings uma abaixo da outra, mas eu tenho apenas uma linha, que é substituída toda vez que executo esse código.
Existe alguma maneira de deixar o StreamWriter anexar a um arquivo existente?
c#
streamwriter
Parada
fonte
fonte
StreamWriter
. Umusing
bloco é melhor sintaxe para isso.using (var stream = new StreamWriter(..)) { stream.WriteLine(..); }
Respostas:
Use isso:
Com essa sobrecarga do construtor StreamWriter, você escolhe se anexa ou sobrescreve o arquivo.
O C # 4 e acima oferecem a seguinte sintaxe, que alguns acham mais legível:
fonte
fonte
Eu suponho que você esteja executando tudo o código acima sempre que escrever algo no arquivo. Cada vez que o fluxo do arquivo é aberto, seu ponteiro de busca é posicionado no início, para que todas as gravações substituam o que havia antes.
Você pode resolver o problema de duas maneiras: com o conveniente
ou reposicionando explicitamente o ponteiro do fluxo:
fonte
Tente o seguinte:
fonte
Substitua isto:
com isso:
true
indica que ele anexa texto.fonte
Use este
StreamWriter
construtor com o 2º parâmetro -true
.fonte
Outra opção é usar System.IO.File.AppendText
Isso é equivalente às sobrecargas do StreamWriter que outras pessoas forneceram.
Além disso, File.AppendAllText pode fornecer uma interface um pouco mais fácil sem precisar se preocupar em abrir e fechar o fluxo. Embora você possa precisar se preocupar em criar suas próprias quebras de linha. :)
fonte
Na verdade, apenas a resposta de Jon (5 de setembro de 2011 às 9:37) com BaseStream.Seek funcionou para o meu caso. Obrigado Jon! Eu precisava anexar linhas a um arquivo txt zipado.
fonte
Uma maneira mais simples é usar o
File.AppendText
texto anexado em UTF-8 a um arquivo existente ou a um novo arquivo se o arquivo especificado não existir e retornar umSystem.IO.StreamWriter
fonte
Substitua esta linha:
com este código:
e escreva sua linha no arquivo de texto como este:
fonte