Leer y escribir en ficheros de texto

Solo disponible en BuenasTareas
  • Páginas : 9 (2199 palabras )
  • Descarga(s) : 0
  • Publicado : 4 de enero de 2012
Leer documento completo
Vista previa del texto
Introducción:

Una de las operaciones más comunes o al menos que se hacen con bastante frecuencia en cualquier aplicación es la de leer y escribir en ficheros, particularmente de texto, es decir, ficheros normales y corrientes, sin contenidos especiales.

Nota:
De cómo leer y escribir en ficheros que no sean "texto plano" nos ocuparemos en otra ocasión.

En este artículo veremos cómorealizar esas operaciones usando exclusivamente funciones y clases del propio .NET Framework. Aclaro esto, porque en Visual Basic se pueden usar tanto las clases del propio .NET como las definidas en la librería/espacio de nombres Microsoft.VisualBasic.


Los formatos (codificación) de los ficheros

Antes de empezar "de verdad" con la forma de leer y escribir en los ficheros mediante las clasede .NET, debemos saber que en .NET se pueden leer y escribir los ficheros usando diferentes codificaciones.

No te voy a explicar qué es eso de la codificación, ya que en la ayuda lo puedes leer, lo que te voy a decir es que en .NET, de forma predeterminada, el formato o codificación usado para leer o escribir en los ficheros es UTF-8.

¿Qué problema hay con esto?
Ninguno, al menos si siemprelees y escribes usando las clases de .NET, pero si tu intención es poder leer un fichero guardado, por ejemplo, con una aplicación de Visual Basic 6 (o el Notepad de Windows), o quieres que lo que tu guardes se pueda abrir también con cualquier otra aplicación, deberás tener cuidado con la codificación usada.
Al menos si el contenido de ese fichero tiene caracteres como la eñe, vocalesacentuadas, signos de apertura de admiración o interrogación, etc., ya que en esos casos, el formato usado por defecto por otras aplicaciones para Windows no será el adecuado, y esos caracteres no se leerán correctamente.

Por tanto, si decides que lo que vas a guardar o leer debe ser "compatible", tendrás que usar la codificación predeterminada de Windows (ANSI), esa codificación puedes indicarlamediante la clase Encoding (definida en el espacio de nombres System.Text) y usando el valor Default, después verás ejemplos de cómo usar esos valores a la hora de leer o de escribir en un fichero.


Leer y escribir ficheros de texto

Leer y escribir en ficheros de texto es lo más sencillo del mundo, (al menos cuando se sabe cómo hacerlo, je, je), ya que lo podemos hacer usando un par de líneasde código.

Veamos un ejemplo de cómo guardar en un fichero el contenido de una cadena de texto:
Visual Basic:
Const fic As String = "E:\tmp\Prueba.txt"
Dim texto As String = "Érase una vez una vieja con un moño..."

Dim sw As New System.IO.StreamWriter(fic)
sw.WriteLine(texto)
sw.Close()


C#:
const string fic = @"E:\tmp\Prueba.txt";
string texto = "Érase una vez una vieja con unmoño...";

System.IO.StreamWriter sw = new System.IO.StreamWriter(fic);
sw.WriteLine(texto);
sw.Close();



Como puedes comprobar, lo único que necesitamos es crear un objeto del tipo StreamWriter (definido en el espacio de nombres System.IO), pasarle al constructor el nombre del fichero en el que queremos guardar y usar el método WriteLine al que le indicamos como argumento la cadena quequeremos guardar.



Ahora vamos a leer de un fichero y asignaremos el contenido del mismo a una variable.
El código para Visual Basic y C# sería el siguiente:
Visual Basic:
Const fic As String = "E:\tmp\Prueba.txt"
Dim texto As String

Dim sr As New System.IO.StreamReader(fic)
texto = sr.ReadToEnd()
sr.Close()

Console.WriteLine(texto)


C#:
const string fic =@"E:\tmp\Prueba.txt";
string texto;

System.IO.StreamReader sr = new System.IO.StreamReader(fic);
texto = sr.ReadToEnd();
sr.Close();

Console.WriteLine(texto);



En este caso también es muy simple, ya que solo necesitamos usar un objeto del tipo StreamReader, (también definido en el espacio de nombres System.IO) al que le indicamos de que fichero queremos leer y por medio del método ReadToEnd...
tracking img