8.1. Escritura en un fichero de texto
Curso: Programación en C# (2015), por Nacho Cabanes
8. Manejo de ficheros
8.1. Escritura en un fichero de texto
Cuando queramos manipular un fichero, siempre deberemos hacerlo en tres pasos:
- Abrir el fichero
- Leer datos de él o escribir datos en él
- Cerrar el fichero
Eso sí, no siempre conseguiremos realizar esas operaciones, así que además tendremos que comprobar los posibles errores. Por ejemplo, puede ocurrir que intentemos abrir un fichero que realmente no exista, o que tratemos de escribir en un dispositivo que sea sólo de lectura.
Vamos a ver un ejemplo, que cree un fichero de texto y escriba algo en él:
// Ejemplo_08_01a.cs // Escritura en un fichero de texto // Introducción a C#, por Nacho Cabanes using System.IO; // Para StreamWriter public class Ejemplo_08_01a { public static void Main() { StreamWriter fichero; fichero = File.CreateText("prueba.txt"); fichero.WriteLine("Esto es una línea"); fichero.Write("Esto es otra"); fichero.WriteLine(" y esto es continuación de la anterior"); fichero.Close(); } }
Hay varias cosas que comentar sobre este programa:
- StreamWriter es la clase que representa a un fichero de texto en el que podemos escribir información.
- El fichero de texto lo creamos con el método (estático) CreateText, que pertenece a la clase File.
- Para escribir en el fichero, empleamos Write y WriteLine, al igual que hacemos en la consola.
- Finalmente, debemos cerrar el fichero con Close, o podría quedar algún dato sin guardar.
Una forma alternativa de crear el fichero es no usar "File.CreateText", sino un constructor que reciba el nombre de fichero, así:
// Ejemplo_08_01b.cs // Escritura en un fichero de texto, con constructor // Introducción a C#, por Nacho Cabanes using System.IO; // Para StreamWriter public class Ejemplo_08_01b { public static void Main() { StreamWriter fichero = new StreamWriter("prueba.txt"); fichero.WriteLine("Esto es una línea"); fichero.Write("Esto es otra"); fichero.WriteLine(" y esto es continuación de la anterior"); fichero.Close(); } }
Existe otra sintaxis, más compacta, que nos permite olvidarnos (hasta cierto punto) de cerrar el fichero, empleando la orden "using" para delimitar el bloque que lee datos del fichero, de esta forma:
// Ejemplo_08_01c.cs // Escritura en un fichero de texto, con "using" // Introducción a C#, por Nacho Cabanes using System.IO; // Para StreamWriter public class Ejemplo_08_01c { public static void Main() { using (StreamWriter fichero = new StreamWriter("prueba.txt")) { fichero.WriteLine("Esto es una línea"); fichero.Write("Esto es otra"); fichero.WriteLine(" y esto es continuación de la anterior"); } } }
Ejercicios propuestos:
Ejercicio propuesto 8.1.1: Crea un programa que vaya leyendo las frases que el usuario teclea y las guarde en un fichero de texto llamado "registroDeUsuario.txt". Terminará cuando la frase introducida sea "fin" (esa frase no deberá guardarse en el fichero).
Ejercicio propuesto 8.1.2: Crea una versión de la base de datos de ficheros (ejercicio 5.2.3), de modo que todos los datos se vuelquen a un fichero de texto al terminar la ejecución del programa.
Ejercicio propuesto 8.1.3: Amplia el proyecto Libro (ejercicio 7.7.8), de modo que todos los datos se vuelquen a un fichero de texto al terminar la ejecución del programa.
Actualizado el: 22-03-2015 16:51