Procedimiento Escribir en un archivo de texto (Guía de programación de C#)

En este artículo hay varios ejemplos en los que muestran distintas formas de escribir texto en un archivo. En los dos primeros se usan métodos estáticos útiles de la clase System.IO.File para escribir cada elemento de cualquier interfaz IEnumerable<string> y un elemento string en un archivo de texto. En el tercer ejemplo se muestra cómo agregar texto a un archivo cuando hay que procesar cada línea individualmente a medida que se escribe en el archivo. En los tres primeros ejemplos se sobrescribe todo el contenido existente del archivo. En el último ejemplo se muestra cómo anexar texto a un archivo existente.

Todos estos ejemplos escriben literales de cadena en los archivos. Si quiere aplicar formato al texto escrito en un archivo, use el método Format o la característica interpolación de cadenas de C#.

Escritura de una colección de cadenas en un archivo

using System.IO;
using System.Threading.Tasks;

class WriteAllLines
{
    public static async Task ExampleAsync()
    {
        string[] lines =
        {
            "First line", "Second line", "Third line" 
        };

        await File.WriteAllLinesAsync("WriteLines.txt", lines);
    }
}

En el ejemplo de código fuente anterior:

  • Se crea una instancia de una matriz de cadenas con tres valores.

  • Se espera una llamada a File.WriteAllLinesAsync que:

    • Crea de forma asincrónica un nombre de archivo WriteLines.txt. Si el archivo ya existe, se sobrescribe.
    • Escribe las líneas especificadas en el archivo.
    • Cierra el archivo, y vacía y elimina automáticamente según sea necesario.

Escritura de una cadena en un archivo

using System.IO;
using System.Threading.Tasks;

class WriteAllText
{
    public static async Task ExampleAsync()
    {
        string text =
            "A class is the most powerful data type in C#. Like a structure, " +
            "a class defines the data and behavior of the data type. ";

        await File.WriteAllTextAsync("WriteText.txt", text);
    }
}

En el ejemplo de código fuente anterior:

  • Se crea una instancia de una cadena en función del literal de cadena asignado.

  • Se espera una llamada a File.WriteAllTextAsync que:

    • Crea de forma asincrónica un nombre de archivo WriteText.txt. Si el archivo ya existe, se sobrescribe.
    • Escribe el texto especificado en el archivo.
    • Cierra el archivo, y vacía y elimina automáticamente según sea necesario.

Escritura de cadenas seleccionadas de una matriz en un archivo

using System.IO;
using System.Threading.Tasks;

class StreamWriterOne
{
    public static async Task ExampleAsync()
    {
        string[] lines = { "First line", "Second line", "Third line" };
        using StreamWriter file = new("WriteLines2.txt");

        foreach (string line in lines)
        {
            if (!line.Contains("Second"))
            {
                await file.WriteLineAsync(line);
            }
        }
    }
}

En el ejemplo de código fuente anterior:

  • Se crea una instancia de una matriz de cadenas con tres valores.
  • Se crea una instancia de un objeto StreamWriter con una ruta de acceso de archivo de WriteLines2.txt como una declaración using.
  • Itera por todas las líneas.
  • Espera condicionalmente una llamada a StreamWriter.WriteLineAsync(String), que escribe la línea en el archivo cuando la línea no contiene "Second".

Anexión de texto a un archivo existente

using System.IO;
using System.Threading.Tasks;

class StreamWriterTwo
{
    public static async Task ExampleAsync()
    {
        using StreamWriter file = new("WriteLines2.txt", append: true);
        await file.WriteLineAsync("Fourth line");
    }
}

En el ejemplo de código fuente anterior:

  • Se crea una instancia de una matriz de cadenas con tres valores.
  • Crea una instancia de un objeto StreamWriter con una ruta de acceso de archivo de WriteLines2.txt como una declaración using, y se pasa true para anexar.
  • Espera una llamada a StreamWriter.WriteLineAsync(String), que escribe la cadena en el archivo como una línea anexada.

Excepciones

Las condiciones siguientes pueden provocar una excepción:

Existen condiciones adicionales que pueden iniciar excepciones cuando se trabaja con el sistema de archivos; es mejor programar de forma defensiva.

Vea también