Dado un archivo, ahora nuestra tarea es leer y escribir una array de bytes en un archivo con la ayuda de la clase FileStream. La clase FileStream en C# es parte del espacio de nombres System.IO y del ensamblado System.Runtime.dll. Esta clase ofrece una secuencia para un archivo que admite operaciones de lectura y escritura síncronas y asíncronas. Esta clase se puede utilizar para leer, escribir, abrir y cerrar archivos en un sistema de archivos. Los búferes de entrada y salida y es por eso que da un mejor rendimiento. Esta clase proporciona diferentes tipos de métodos y el método de lectura y escritura es uno de ellos.
1. Método Read(): este método se utiliza para leer los bytes del flujo y escribir los datos en el búfer especificado.
Sintaxis:
void Leer (byte[] arr, int loc, int count);
Aquí, arr es una array de bytes, loc es el desplazamiento de bytes en arr en el que se colocarán los bytes leídos, y el recuento es el total de bytes leídos/escritos hacia o desde un archivo.
Excepción: este método también arroja algunas excepciones:
- ArgumentNullException: esta excepción se lanza cuando el arr es nulo.
- ArgumentOutOfRangeException: esta excepción se lanza cuando el loc o el recuento es negativo.
- NotSupportedException: esta excepción se lanza cuando la transmisión no admite la lectura.
- IOException: esta excepción se produce cuando se produce un error de E/S.
- ArgumentException: esta excepción se lanza cuando el valor de loc y count es un rango no válido en la array.
Este método también tiene un método sobrecargado que es Read(Span<Byte>). Este método se usa para leer una secuencia de bytes del flujo de archivos dado y avanzar la posición por el número de bytes leídos en el flujo de archivos dado.
Sintaxis:
public override int Read (Span<byte> buff);
2. Método Write(): este método se utiliza para leer una secuencia de bytes en el flujo de archivos.
void Write(byte[] arr, int loc, int count);
Aquí, arr es una array de bytes, loc es el desplazamiento de bytes basado en 0 en arr en el que comienza la copia de bytes en el flujo, y el recuento es el total de bytes leídos/escritos en o desde un archivo.
Excepción: este método también arroja algunas excepciones:
- ArgumentNullException: esta excepción se lanza cuando el arr es nulo.
- ArgumentOutOfRangeException: esta excepción se lanza cuando el loc o el recuento es negativo.
- NotSupportedException: esta excepción se lanza cuando la transmisión no admite la lectura.
- ObjectDisposedException: esta excepción se lanza cuando se cierra la secuencia especificada.
- IOException: esta excepción se produce cuando se produce un error de E/S.
- ArgumentException: esta excepción se lanza cuando el valor de loc y count es un rango no válido en la array.
Este método también tiene un método sobrecargado que es Read(Span<Byte>). Este método se usa para escribir una secuencia de bytes desde un intervalo de solo lectura en el flujo de archivo dado y avanzar la posición por el número de bytes escritos en el flujo de archivo dado.
Sintaxis:
public override int Write(Span<byte> buff);
Leer y escribir una array de bytes en un archivo usando FileStream Class
En este programa, hemos usado operaciones de lectura y escritura para archivar y encontrar el elemento más grande del archivo.
C#
// C# program to read and write a byte array to // file using FileStream Class using System; using System.IO; class GFG { static public void Main() { // Initializing byte arrays byte[] arr1 = { 4, 25, 40, 3, 11, 18, 7 }; byte[] arr2 = new byte[7]; // initializing values byte largest = 0; // FileStream instance FileStream file; file = new FileStream("GeeksforGeeks.txt", FileMode.Create, FileAccess.Write); // Using write() method // Write the bytes file.Write(arr1, 0, 7); // Closing the file file.Close(); // Instantiating file = new FileStream("GeeksforGeeks.txt", FileMode.Open, FileAccess.Read); // Using Read() method // Read the bytes file.Read(arr2, 0, 7); largest = arr2[0]; for (int n = 1; n < arr2.Length; n++) { if (largest < arr2[n]) largest = arr2[n]; } Console.WriteLine("The largest element is : " + largest); // Close the file file.Close(); } }
Producción:
The largest element is : 40