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.
Cree un archivo de texto de ejemplo en Bloc de notas. Siga estos pasos:
- Pegue el texto hello world en Bloc de notas.
- Guarde el archivo como Sample.txt.
Inicie Microsoft Visual Studio.
En el menú Archivo, seleccione Nuevo y luego Proyecto.
Seleccione Proyectos en Visual C# en Tipos de proyecto y luego seleccione Aplicación de consola en Plantillas.
Agregue el código siguiente al principio del archivo Class1.cs:
using System.IO;
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."); }
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.
Inicie Visual Studio.
En el menú Archivo, seleccione Nuevo y luego Proyecto.
Seleccione Proyectos en Visual C# en Tipos de proyecto y luego seleccione Aplicación de consola en Plantillas.
Agregue el código siguiente al principio del archivo Class1.cs:
using System.IO;
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."); }
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.
Inicie Visual Studio.
En el menú Archivo, elija Nuevo y, a continuación, haga clic en Proyecto.
Haga clic en Proyectos en Visual C# en Tipos de proyecto y luego haga clic en Aplicación de consola en Plantillas.
Agregue el código siguiente al principio del archivo Class1.cs:
using System.IO; using System.Text;
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."); }
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.