2009-12-04 24 views

Respuesta

13

Sí, lo hace.

Si no fuera así, no habría forma de cerrarlo después, ya que no devuelve nada para desechar.

De the docs:

Dada una cadena y una ruta de archivo, este método abre el archivo especificado, Añade la cadena al final del archivo , y luego cierra el archivo.

Los otros métodos de utilidad (ReadAllText, WriteAllBytes etc) funcionan de la misma manera.

+0

Gracias estuve inclinado a usar un StreamWriter, pero esto parece mucho más fácil. –

+0

Parece ser una convención de nomenclatura que todos los métodos IO que contienen 'Todos' eliminan/cierran los flujos subyacentes, fe: 'File.AppendAllLines',' File.AppendAllText', 'File.ReadAllBytes',' File.ReadAllLines', 'File.ReadAllText',' File.WriteAllLines', 'File.WriteAllText'. No es garantía sino una buena mnemotecnia. –

+0

@TimSchmelter: me gustaría: "¿Devuelve una secuencia/lector/escritor?" Si no, debería estar cerrando todo (ya que no hay nada más que pueda hacer). Si lo hace, no te devolverá algo que ya está cerrado. –

4

Este es el código del método:

public static void AppendAllText(string path, string contents, Encoding encoding) 
{ 
    using (StreamWriter writer = new StreamWriter(path, true, encoding)) 
    { 
     writer.Write(contents); 
    } 
} 

Por lo tanto, sí.

+3

No creo que sea una buena idea confiar en los detalles de implementación a menos que sea absolutamente necesario. Las implementaciones pueden cambiar. Afortunadamente en este caso está documentado explícitamente. –

Cuestiones relacionadas