Me gustaría crear un archivo .txt y escribirle, y si el archivo ya existe, solo quiero agregar algunas líneas más:
string path = @"E:\AppServ\Example.txt";
if (!File.Exists(path))
{
File.Create(path);
TextWriter tw = new StreamWriter(path);
tw.WriteLine("The very first line!");
tw.Close();
}
else if (File.Exists(path))
{
TextWriter tw = new StreamWriter(path);
tw.WriteLine("The next line!");
tw.Close();
}
Pero la primera línea parece sobrescribirse siempre ... ¿cómo puedo evitar escribir en la misma línea (estoy usando esto en un bucle)?
Sé que es algo bastante simple, pero nunca he usado el WriteLine
método antes. Soy totalmente nuevo en C #.
File.Open
delega internamente en una función WinAPI (ver el siguiente comentario) con la esperanza de prevenir la condición de carrera. La mayoría de las soluciones aquí no hacen esto y obviamente están sujetas a condiciones de carrera.
if (file exists) { open file }
casi siempre es incorrecto en todos los lenguajes de programación! Para .NET la solución es usarFile.Open(path, FileMode.Append, FileAccess.ReadWrite)
con las banderas apropiadas.