Quiero agregar líneas a mi archivo. Estoy usando un StreamWriter:
StreamWriter file2 = new StreamWriter(@"c:\file.txt");
file2.WriteLine(someString);
file2.Close();
La salida de mi archivo debe estar varias cadenas una debajo de la otra, pero solo tengo una fila, que se sobrescribe cada vez que ejecuto este código.
¿Hay alguna forma de permitir que StreamWriter se agregue a un archivo existente?
c#
streamwriter
Punto de referencia
fuente
fuente
StreamWriter
. Unusing
bloque es una mejor sintaxis para esto.using (var stream = new StreamWriter(..)) { stream.WriteLine(..); }
Respuestas:
Use esto en su lugar:
Con esta sobrecarga del constructor StreamWriter, usted elige si agrega el archivo o lo sobrescribe.
C # 4 y superior ofrece la siguiente sintaxis, que algunos consideran más legible:
fuente
fuente
Supongo que está ejecutando todo el código anterior cada vez que escribe algo en el archivo. Cada vez que se abre la secuencia del archivo, su puntero de búsqueda se coloca al principio para que todas las escrituras terminen sobrescribiendo lo que estaba allí antes.
Puede resolver el problema de dos maneras: con el conveniente
o al reposicionar explícitamente el puntero de la secuencia usted mismo:
fuente
Prueba esto:
fuente
Reemplace esto:
con este:
true
indica que agrega texto.fuente
Utilice este
StreamWriter
constructor con el segundo parámetro -true
.fuente
Otra opción es usar System.IO.File.AppendText
Esto es equivalente a las sobrecargas de StreamWriter que otros han dado.
También File.AppendAllText puede proporcionar una interfaz un poco más fácil sin tener que preocuparse por abrir y cerrar la transmisión. Aunque es posible que deba preocuparse por poner sus propios saltos de línea. :)
fuente
En realidad, solo la respuesta de Jon (5 de septiembre de 11 a las 9:37) con BaseStream.Seek funcionó para mi caso. Gracias Jon! Necesitaba agregar líneas a un archivo txt comprimido.
fuente
Una forma más simple es usar el
File.AppendText
texto codificado UTF-8 que se agrega a un archivo existente, o a un nuevo archivo si el archivo especificado no existe y devuelve unSystem.IO.StreamWriter
fuente
Reemplace esta línea:
con este código:
y luego escribe tu línea en el archivo de texto de esta manera:
fuente