En las operaciones de 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.
Los flujos se utilizan normalmente al leer datos de archivos grandes. Mediante el uso de 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 desde la aplicación.
La razón para dividirlo en pequeños fragmentos se debe al impacto en el rendimiento de leer un archivo grande de una sola vez. Si tuviera que leer los datos de, digamos, un archivo de 100 MB de una sola vez, su aplicación podría bloquearse y volverse inestable. Entonces, el mejor enfoque es utilizar secuencias para dividir el archivo en fragmentos manejables.
Por tanto, cuando se lleva a cabo 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 se transfieren primero del archivo al flujo. Luego, los datos se leen desde la aplicación a través de la transmisión. Veamos un ejemplo de cómo podemos leer y escribir usando streams.
En este tutorial, aprenderá:
- Lector de corriente
- Escritor de 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 del flujo.
Para nuestro ejemplo, asumiremos que tenemos un archivo en la unidad D llamado Example.txt. El archivo será un archivo de texto simple y tendrá 2 líneas como se muestra a continuación
- Guru99 - .Net
- Guru99 -C #
Para nuestro ejemplo, crearemos una aplicación de consola simple y trabajaremos con flujos de archivos.
Veamos un ejemplo de cómo podemos usar secuencias para leer datos de un archivo. Ingrese el siguiente código en el archivo program.cs.
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: -
- Primero, declaramos un objeto lector de flujo. El objeto de lector de flujo se utiliza en C # para definir un flujo desde el archivo a la aplicación. Los datos se enviarán del archivo a la secuencia siempre que se lean datos del archivo. File.OpenText se utiliza para abrir el archivo "Example.txt" en modo de sólo lectura. A continuación, el controlador del archivo se envía al objeto lector de flujo.
- A continuación, estamos definiendo una variable temporal 's' que se utilizará para leer todos los datos del archivo.
- Luego usamos el método de lectura de flujo ReadLine para leer cada línea del búfer de flujo. Cuando realizamos esta operación, 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 establece el código anterior y el proyecto se ejecuta con Visual Studio, obtendrá el siguiente resultado.
Producción:-
En la salida, puede ver que Stream Reader leyó ambas líneas del archivo. Finalmente, las líneas de la cadena leída de la secuencia se enviaron a la Consola.
Escritor de transmisiones
El escritor de secuencias se utiliza para escribir datos en un archivo mediante secuencias. Los datos de la aplicación se escriben primero en el flujo. Después de eso, la secuencia escribe los datos en el archivo. Veamos un ejemplo de cómo podemos usar secuencias para escribir datos desde un archivo. Ingrese el siguiente código en el archivo program.cs.
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: -
- Primero, declaramos un objeto de escritura de flujo. El objeto de escritor de flujo se usa en C # para definir un flujo. Luego, la secuencia se usa para escribir datos desde la aplicación en el archivo. Los datos se enviarán desde la aplicación al flujo siempre que sea necesario escribir datos. El comando File.AppendText se utiliza para abrir el archivo "Example.txt" en modo de anexión. A continuación, el controlador del archivo se envía al objeto de escritura de flujo.
- Estamos usando el método de escritura de flujo Writeline para escribir la línea "Guru99 - ASP.Net" en el flujo. Desde la secuencia, la línea se escribirá en el archivo.
- A continuación, 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 se necesita para escribir.
- Finalmente, estamos leyendo el contenido del archivo nuevamente y escribiéndolo en el registro de la consola. Esto es para verificar si la línea se escribió en el archivo.
Cuando se establece el código anterior y el proyecto se ejecuta con Visual Studio, obtendrá el siguiente resultado.
Producción:-
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
- Las secuencias se utilizan como un nivel intermedio entre la aplicación y el archivo.
- Se utiliza StreamReader siempre que se requiera leer datos de un archivo.
- Un Streamwriter se utiliza siempre que es necesario escribir datos en un archivo.