Programa C# para leer y escribir una array de bytes en un archivo usando la clase FileStream

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

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *