C #: lectura y escritura en archivos de texto

los StreamReader y StreamWriterlas clases se utilizan para leer y escribir datos en archivos de texto. Estas clases heredan de la clase base abstracta Stream, que admite la lectura y escritura de bytes en un flujo de archivos.

La clase StreamReader

los StreamReaderclass también hereda de la clase base abstracta TextReader que representa un lector para leer series de caracteres. La siguiente tabla describe algunos de losmethods de la clase StreamReader -

No Señor. Método y descripción
1

public override void Close()

Cierra el objeto StreamReader y la secuencia subyacente, y libera los recursos del sistema asociados con el lector.

2

public override int Peek()

Devuelve el siguiente carácter disponible pero no lo consume.

3

public override int Read()

Lee el siguiente carácter de la secuencia de entrada y avanza la posición del carácter en uno.

Ejemplo

El siguiente ejemplo demuestra la lectura de un archivo de texto llamado Jamaica.txt. El archivo dice:

Down the way where the nights are gay
And the sun shines daily on the mountain top
I took a trip on a sailing ship
And when I reached Jamaica
I made a stop

using System;
using System.IO;

namespace FileApplication {
   class Program {
      static void Main(string[] args) {
         try {
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("c:/jamaica.txt")) {
               string line;

               // Read and display lines from the file until 
               // the end of the file is reached. 
               while ((line = sr.ReadLine()) != null) {
                  Console.WriteLine(line);
               }
            }
         } catch (Exception e) {
            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read:");
            Console.WriteLine(e.Message);
         }
         Console.ReadKey();
      }
   }
}

¡Adivina lo que muestra cuando compilas y ejecutas el programa!

La clase StreamWriter

los StreamWriter La clase hereda de la clase abstracta TextWriter que representa a un escritor, que puede escribir una serie de caracteres.

La siguiente tabla describe los métodos más utilizados de esta clase:

No Señor. Método y descripción
1

public override void Close()

Cierra el objeto StreamWriter actual y la secuencia subyacente.

2

public override void Flush()

Borra todos los búferes del escritor actual y hace que los datos almacenados en búfer se escriban en la secuencia subyacente.

3

public virtual void Write(bool value)

Escribe la representación de texto de un valor booleano en la cadena o secuencia de texto. (Heredado de TextWriter).

4

public override void Write(char value)

Escribe un personaje en la secuencia.

5

public virtual void Write(decimal value)

Escribe la representación de texto de un valor decimal en la cadena o secuencia de texto.

6

public virtual void Write(double value)

Escribe la representación de texto de un valor de punto flotante de 8 bytes en la cadena de texto o secuencia.

7

public virtual void Write(int value)

Escribe la representación de texto de un entero con signo de 4 bytes en la cadena de texto o secuencia.

8

public override void Write(string value)

Escribe una cadena en la secuencia.

9

public virtual void WriteLine()

Escribe un terminador de línea en la cadena de texto o secuencia.

Para obtener una lista completa de métodos, visite la documentación de C # de Microsoft.

Ejemplo

El siguiente ejemplo muestra cómo escribir datos de texto en un archivo usando la clase StreamWriter:

using System;
using System.IO;

namespace FileApplication {
   class Program {
      static void Main(string[] args) {
         string[] names = new string[] {"Zara Ali", "Nuha Ali"};
         
         using (StreamWriter sw = new StreamWriter("names.txt")) {

            foreach (string s in names) {
               sw.WriteLine(s);
            }
         }
         
         // Read and show each line from the file.
         string line = "";
         using (StreamReader sr = new StreamReader("names.txt")) {
            while ((line = sr.ReadLine()) != null) {
               Console.WriteLine(line);
            }
         }
         Console.ReadKey();
      }
   }
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Zara Ali
Nuha Ali