Usar Visual C# para leer y escribir en un archivo de texto

Este artículo le ayuda a leer y escribir en un archivo de texto mediante Visual C#.

Versión del producto original: Visual Studio
Número KB original: 816149

Resumen

En la sección Leer un archivo de texto de este artículo se describe cómo usar la clase StreamReader para leer un archivo de texto. En las secciones Escribir un archivo de texto (ejemplo 1) y Escribir un archivo de texto (ejemplo 2) se describe cómo usar la clase StreamWriter para escribir texto en un archivo.

Leer un archivo de texto

El código siguiente usa la clase StreamReader para abrir, leer y cerrar el archivo de texto. Puede pasar la ruta de acceso de un archivo de texto al constructor StreamReader para abrir el archivo automáticamente. El método ReadLine lee cada línea de texto e incrementa el puntero de archivo a la siguiente línea a medida que lee. Cuando el método ReadLine llega al final del archivo, devuelve una referencia nula. Para obtener más información, consulte StreamReader Class.

  1. Cree un archivo de texto de ejemplo en Bloc de notas. Siga estos pasos:

    1. Pegue el texto hello world en Bloc de notas.
    2. Guarde el archivo como Sample.txt.
  2. Inicie Microsoft Visual Studio.

  3. En el menú Archivo, seleccione Nuevo y luego Proyecto.

  4. Seleccione Proyectos en Visual C# en Tipos de proyecto y luego seleccione Aplicación de consola en Plantillas.

  5. Agregue el código siguiente al principio del archivo Class1.cs:

    using System.IO;
    
  6. Agregue el código siguiente al método Main:

    String line;
    try
    {
        //Pass the file path and file name to the StreamReader constructor
        StreamReader sr = new StreamReader("C:\\Sample.txt");
        //Read the first line of text
        line = sr.ReadLine();
        //Continue to read until you reach end of file
        while (line != null)
        {
            //write the line to console window
            Console.WriteLine(line);
            //Read the next line
            line = sr.ReadLine();
        }
        //close the file
        sr.Close();
        Console.ReadLine();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  7. En el menú Depurar, seleccione Inicio para compilar y ejecutar la aplicación. Presione Entrar para cerrar la ventana Consola. La ventana Consola muestra el contenido del archivo Sample.txt:

    Hello world
    

Escribir un archivo de texto (ejemplo 1)

El código siguiente usa la clase StreamWriter para abrir, escribir y cerrar el archivo de texto. De forma similar a la clase StreamReader, puede pasar la ruta de acceso de un archivo de texto al constructor StreamWriter para abrir el archivo automáticamente. El método WriteLine escribe una línea de texto en el archivo de texto creado.

  1. Inicie Visual Studio.

  2. En el menú Archivo, seleccione Nuevo y luego Proyecto.

  3. Seleccione Proyectos en Visual C# en Tipos de proyecto y luego seleccione Aplicación de consola en Plantillas.

  4. Agregue el código siguiente al principio del archivo Class1.cs:

    using System.IO;
    
  5. Agregue el código siguiente al método Main:

    try
    {
        //Pass the filepath and filename to the StreamWriter Constructor
        StreamWriter sw = new StreamWriter("C:\\Test.txt");
        //Write a line of text
        sw.WriteLine("Hello World!!");
        //Write a second line of text
        sw.WriteLine("From the StreamWriter class");
        //Close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. En el menú Depurar, seleccione Inicio para compilar y ejecutar la aplicación. Este código crea un archivo denominado Test.txt la unidad C. Abra Test.txt en un editor de texto, como Bloc de notas. Test.txt contiene dos líneas de texto:

    Hello World!!
    From the StreamWriter class
    

Escribir un archivo de texto (ejemplo 2)

El código siguiente usa la clase StreamWriter para abrir, escribir y cerrar el archivo de texto. A diferencia del ejemplo anterior, este código pasa dos parámetros adicionales al constructor. El primer parámetro es la ruta de acceso del archivo y el nombre del archivo. El segundo parámetro, true, especifica que el archivo se abre en modo append. Si especifica false para el segundo parámetro, el contenido del archivo se sobrescribe cada vez que ejecute el código. El tercer parámetro especifica Unicode, de modo que StreamWriter codifica el archivo en formato Unicode. También puede especificar los siguientes métodos de codificación para el tercer parámetro:

  • ASC11
  • Unicode
  • UTF7
  • UTF8

El método Write es similar al método WriteLine, excepto que el método Write no inserta automáticamente una combinación de caracteres de retorno de carro o de avance de línea (CR/LF). Es de utilidad cuando quiere escribir un carácter a la vez.

  1. Inicie Visual Studio.

  2. En el menú Archivo, elija Nuevo y, a continuación, haga clic en Proyecto.

  3. Haga clic en Proyectos en Visual C# en Tipos de proyecto y luego haga clic en Aplicación de consola en Plantillas.

  4. Agregue el código siguiente al principio del archivo Class1.cs:

    using System.IO;
    using System.Text;
    
  5. Agregue el código siguiente al método Main:

    Int64 x;
    try
    {
        //Open the File
        StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
    
        //Write out the numbers 1 to 10 on the same line.
        for(x=0; x < 10; x++)
        {
        sw.Write(x);
        }
    
        //close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. En el menú Depurar, seleccione Inicio para compilar y ejecutar la aplicación. Este código crea un archivo denominado Test1.txt en la unidad C. Abra Test1.txt en un editor de texto, como Bloc de notas. Test1.txt contiene una sola línea de texto: 0123456789.

Descripción de código completa para leer un archivo de texto

//Read a Text File
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            String line;
            try
            {
                //Pass the file path and file name to the StreamReader constructor
                StreamReader sr = new StreamReader("C:\\Sample.txt");
                //Read the first line of text
                line = sr.ReadLine();
                //Continue to read until you reach end of file
                while (line != null)
                {
                    //write the line to console window
                    Console.WriteLine(line);
                    //Read the next line
                    line = sr.ReadLine();
                }
                //close the file
                sr.Close();
                Console.ReadLine();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Lista de código completa para escribir un archivo de texto (versión 1)

//Write a text file - Version-1
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            try
            {
                //Pass the filepath and filename to the StreamWriter Constructor
                StreamWriter sw = new StreamWriter("C:\\Test.txt");
                //Write a line of text
                sw.WriteLine("Hello World!!");
                //Write a second line of text
                sw.WriteLine("From the StreamWriter class");
                //Close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Lista de código completa para escribir un archivo de texto (versión 2)

//Write a text file - Version 2
using System;
using System.IO;
using System.Text;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            Int64 x;
            try
            {
                //Open the File
                StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
                //Writeout the numbers 1 to 10 on the same line.
                for(x=0; x < 10; x++)
                {
                    sw.Write(x);
                }
                //close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Solucionar problemas

Para todas las manipulaciones de archivos, es una buena práctica de programación ajustar el código dentro de un bloque try-catch-finally para controlar errores y excepciones. En concreto, es recomendable liberar controladores en el archivo en el bloque final para que el archivo no quede bloqueado indefinidamente. Entre algunos errores posibles se incluye un archivo que no existe o un archivo que ya está en uso.