Leer y escribir en archivos binarios

los BinaryReader y BinaryWriter las clases se utilizan para leer y escribir en un archivo binario.

La clase BinaryReader

los BinaryReaderLa clase se usa para leer datos binarios de un archivo. UNABinaryReader El objeto se crea pasando un FileStream objeto a su constructor.

La siguiente tabla describe los methods del BinaryReader clase.

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

public override void Close()

Cierra el objeto BinaryReader y la secuencia subyacente.

2

public virtual int Read()

Lee los caracteres de la secuencia subyacente y avanza la posición actual de la secuencia.

3

public virtual bool ReadBoolean()

Lee un valor booleano de la secuencia actual y avanza la posición actual de la secuencia en un byte.

4

public virtual byte ReadByte()

Lee el siguiente byte de la secuencia actual y avanza la posición actual de la secuencia en un byte.

5

public virtual byte[] ReadBytes(int count)

Lee el número especificado de bytes de la secuencia actual en una matriz de bytes y avanza la posición actual en ese número de bytes.

6

public virtual char ReadChar()

Lee el siguiente carácter de la secuencia actual y avanza la posición actual de la secuencia de acuerdo con la codificación utilizada y el carácter específico que se lee en la secuencia.

7

public virtual char[] ReadChars(int count)

Lee el número especificado de caracteres de la secuencia actual, devuelve los datos en una matriz de caracteres y avanza la posición actual de acuerdo con la codificación utilizada y el carácter específico que se lee en la secuencia.

8

public virtual double ReadDouble()

Lee un valor de punto flotante de 8 bytes del flujo actual y avanza la posición actual del flujo en ocho bytes.

9

public virtual int ReadInt32()

Lee un entero de 4 bytes con signo del flujo actual y avanza cuatro bytes en la posición actual del flujo.

10

public virtual string ReadString()

Lee una cadena de la secuencia actual. La cadena tiene como prefijo la longitud, codificada como un número entero de siete bits a la vez.

La clase BinaryWriter

los BinaryWriterLa clase se usa para escribir datos binarios en una secuencia. Un objeto BinaryWriter se crea pasando un objeto FileStream a su constructor.

La siguiente tabla describe los métodos más utilizados de la clase BinaryWriter.

No Señor. Función descriptiva
1

public override void Close()

Cierra el objeto BinaryWriter y la secuencia subyacente.

2

public virtual void Flush()

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

3

public virtual long Seek(int offset, SeekOrigin origin)

Establece la posición dentro de la secuencia actual.

4

public virtual void Write(bool value)

Escribe un valor booleano de un byte en el flujo actual, donde 0 representa falso y 1 representa verdadero.

5

public virtual void Write(byte value)

Escribe un byte sin firmar en la secuencia actual y avanza la posición de la secuencia en un byte.

6

public virtual void Write(byte[] buffer)

Escribe una matriz de bytes en la secuencia subyacente.

7

public virtual void Write(char ch)

Escribe un carácter Unicode en la secuencia actual y avanza la posición actual de la secuencia de acuerdo con la codificación utilizada y los caracteres específicos que se escriben en la secuencia.

8

public virtual void Write(char[] chars)

Escribe una matriz de caracteres en la secuencia actual y avanza la posición actual de la secuencia de acuerdo con la codificación utilizada y los caracteres específicos que se escriben en la secuencia.

9

public virtual void Write(double value)

Escribe un valor de punto flotante de ocho bytes en la secuencia actual y avanza la posición de la secuencia en ocho bytes.

10

public virtual void Write(int value)

Escribe un entero con signo de cuatro bytes en la secuencia actual y avanza la posición de la secuencia cuatro bytes.

11

public virtual void Write(string value)

Escribe una cadena con prefijo de longitud en esta secuencia en la codificación actual de BinaryWriter y avanza la posición actual de la secuencia de acuerdo con la codificación utilizada y los caracteres específicos que se escriben en la secuencia.

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

Ejemplo

El siguiente ejemplo demuestra la lectura y escritura de datos binarios:

using System;
using System.IO;

namespace BinaryFileApplication {
   class Program {
      static void Main(string[] args) {
         BinaryWriter bw;
         BinaryReader br;
         
         int i = 25;
         double d = 3.14157;
         bool b = true;
         string s = "I am happy";
         
         //create the file
         try {
            bw = new BinaryWriter(new FileStream("mydata", FileMode.Create));
         } catch (IOException e) {
            Console.WriteLine(e.Message + "\n Cannot create file.");
            return;
         }
         
         //writing into the file
         try {
            bw.Write(i);
            bw.Write(d);
            bw.Write(b);
            bw.Write(s);
         } catch (IOException e) {
            Console.WriteLine(e.Message + "\n Cannot write to file.");
            return;
         }
         bw.Close();
         
         //reading from the file
         try {
            br = new BinaryReader(new FileStream("mydata", FileMode.Open));
         } catch (IOException e) {
            Console.WriteLine(e.Message + "\n Cannot open file.");
            return;
         }
         
         try {
            i = br.ReadInt32();
            Console.WriteLine("Integer data: {0}", i);
            d = br.ReadDouble();
            Console.WriteLine("Double data: {0}", d);
            b = br.ReadBoolean();
            Console.WriteLine("Boolean data: {0}", b);
            s = br.ReadString();
            Console.WriteLine("String data: {0}", s);
         } catch (IOException e) {
            Console.WriteLine(e.Message + "\n Cannot read from file.");
            return;
         }
         br.Close();
         Console.ReadKey();
      }
   }
}

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

Integer data: 25
Double data: 3.14157
Boolean data: True
String data: I am happy