Tutorial de transmisión en C#: StreamReader y StreamWriter [Ejemplo]

¿Qué es la secuencia C#?

En las operaciones con archivos de C#, normalmente se utilizan secuencias para leer y escribir en archivos. Una secuencia es una capa adicional creada entre una aplicación y un archivo. La secuencia se utiliza para garantizar operaciones de lectura y escritura fluidas en el archivo.

Las transmisiones se utilizan normalmente al leer datos de archivos grandes. Al utilizar transmisiones, los datos de archivos grandes se dividen en pequeños fragmentos y se envían a la transmisión. Estos fragmentos de datos se pueden leer luego desde la aplicación.

La razón para dividirlo en partes pequeñas es el impacto en el rendimiento de leer un archivo grande de una sola vez. Si leyera los datos de, digamos, un archivo de 100 MB de una sola vez, su aplicación podría simplemente colgarse y volverse inestable. El mejor enfoque es entonces utilizar secuencias para dividir el archivo en partes manejables.

Entonces, cuando se realiza una operación de escritura en un archivo, los datos que se van a escribir se escriben primero en la secuencia. Desde la secuencia, los datos se escriben en el archivo. Lo mismo ocurre con la operación de lectura. En la operación de lectura, los datos primero se transfieren del archivo a la secuencia. Luego, los datos se leen desde la aplicación a través del flujo. Veamos un ejemplo de cómo podemos leer y escribir usando transmisiones.

Lector de corriente

El lector de secuencias se utiliza para leer datos de un archivo mediante secuencias. Los datos del archivo se leen primero en la secuencia. A partir de entonces, la aplicación lee los datos de la secuencia.

Para nuestro ejemplo, asumiremos que tenemos un archivo en la unidad D llamado Ejemplo.txt. El archivo será un archivo de texto simple y tendrá 2 líneas como se muestra a continuación.

  • Gurú99 – .Net
  • Gurú99 -C#

Para nuestro ejemplo, crearemos una aplicación de consola simple y trabajaremos con secuencias de archivos.

Veamos un ejemplo de cómo podemos usar transmisiones para leer datos de un archivo. Ingrese el siguiente código en el archivo program.cs.

Lector de corriente

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";

    using (StreamReader sr = File.OpenText(path))
    {
     String s = "";

     while ((s = sr.ReadLine()) != null)
     {
      Console.WriteLine(s);
     }
    }
   Console.ReadKey();
  }
 }
}

Explicación del código: -

  1. Primero, declaramos un objeto lector de flujo. El objeto lector de secuencia se utiliza en C# para definir una secuencia desde el archivo a la aplicación. Los datos se enviarán desde el archivo a la secuencia cada vez que se lean datos del archivo. El archivo.OpenText se utiliza para abrir el archivo “Example.txt” en modo de solo lectura. Luego, el controlador del archivo se envía al objeto lector de secuencia.
  2. A continuación, definimos una variable temporal 's' que se utilizará para leer todos los datos del archivo.
  3. Luego usamos el método de lectura de flujo ReadLine para leer cada línea del búfer de flujo. Cuando realizamos esto Inteligente, cada línea se transferirá primero del archivo al búfer. Luego, la línea de cadena se transferirá del búfer a la variable 's'. Luego, escribimos el contenido de la cadena 's' en la consola.

Cuando se configura el código anterior y el proyecto se ejecuta usando Visual Studio, obtendrá el siguiente resultado.

Salida:-

Lector de corriente

En el resultado, puede ver que Stream Reader leyó ambas líneas del archivo. Finalmente, las líneas de la cadena leídas del flujo se enviaron a la Consola.

Escritor de secuencias

El escritor de secuencias se utiliza para escribir datos en un archivo mediante secuencias. Los datos de la aplicación se escriben primero en la secuencia. Después de eso, la secuencia escribe los datos en el archivo. Veamos un ejemplo de cómo podemos usar transmisiones para escribir datos desde un archivo. Ingrese el siguiente código en el archivo program.cs.

Escritor de secuencias

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";
    
    using (StreamWriter sr = File.AppendText(path))
    {
     sr.WriteLine("Guru99 - ASP.Net");
     sr.Close();

     Console.WriteLine(File.ReadAllText(path));
    }
    Console.ReadKey();
  }
 }
}

Explicación del código: -

  1. Primero, declaramos un objeto de escritura de flujo. El objeto de escritura de secuencia se utiliza en C# para definir una secuencia. Luego, la secuencia se utiliza para escribir datos desde la aplicación en el archivo. Los datos se enviarán desde la aplicación a la secuencia siempre que sea necesario escribir datos. El comando File.AppendText se utiliza para abrir el archivo "Example.txt" en modo de adición. Luego, el controlador del archivo se envía al objeto de escritura de secuencia.
  2. Estamos utilizando el método de escritura de secuencia Writeline para escribir la línea "Guru99 - ASP.Net" en la secuencia. Desde la secuencia, la línea se escribirá en el archivo.
  3. Luego cerramos el escritor de secuencias después de escribir en el archivo. Normalmente es una buena práctica cerrar los controladores de archivos cuando el archivo ya no es necesario para escribir.
  4. Finalmente, volvemos a leer el contenido del archivo y lo escribimos en el registro de la consola. Esto es para verificar si la línea se escribió en el archivo.

Cuando se configura el código anterior y se ejecuta el proyecto mediante Visual Studio, obtendrá el siguiente resultado.

Salida:-

Escritor de secuencias

En el resultado, puede ver que la línea "Guru99 - ASP.Net" se agregó correctamente al archivo. Las 3 líneas de texto se pueden ver en la consola.

Resumen

  • Los flujos se utilizan como nivel intermedio entre la aplicación y el archivo.
  • Se utiliza un StreamReader siempre que es necesario leer datos de un archivo.
  • Se utiliza un Streamwriter siempre que es necesario escribir datos en un archivo.