Lecture et écriture dans des fichiers binaires

le BinaryReader et BinaryWriter Les classes sont utilisées pour lire et écrire dans un fichier binaire.

La classe BinaryReader

le BinaryReaderclass est utilisé pour lire des données binaires à partir d'un fichier. UNEBinaryReader l'objet est créé en passant un FileStream object à son constructeur.

Le tableau suivant décrit les methods du BinaryReader classe.

N ° Sr. Méthode et description
1

public override void Close()

Il ferme l'objet BinaryReader et le flux sous-jacent.

2

public virtual int Read()

Lit les caractères du flux sous-jacent et avance la position actuelle du flux.

3

public virtual bool ReadBoolean()

Lit une valeur booléenne à partir du flux actuel et avance la position actuelle du flux d'un octet.

4

public virtual byte ReadByte()

Lit l'octet suivant du flux actuel et avance la position actuelle du flux d'un octet.

5

public virtual byte[] ReadBytes(int count)

Lit le nombre spécifié d'octets du flux actuel dans un tableau d'octets et avance la position actuelle de ce nombre d'octets.

6

public virtual char ReadChar()

Lit le caractère suivant du flux actuel et avance la position actuelle du flux en fonction de l'encodage utilisé et du caractère spécifique lu dans le flux.

sept

public virtual char[] ReadChars(int count)

Lit le nombre de caractères spécifié dans le flux actuel, renvoie les données dans un tableau de caractères et avance la position actuelle conformément au codage utilisé et au caractère spécifique lu dans le flux.

8

public virtual double ReadDouble()

Lit une valeur à virgule flottante de 8 octets dans le flux actuel et avance la position actuelle du flux de huit octets.

9

public virtual int ReadInt32()

Lit un entier signé de 4 octets dans le flux actuel et avance la position actuelle du flux de quatre octets.

dix

public virtual string ReadString()

Lit une chaîne dans le flux actuel. La chaîne est précédée de la longueur, codée sous la forme d'un entier sept bits à la fois.

La classe BinaryWriter

le BinaryWriterclass est utilisée pour écrire des données binaires dans un flux. Un objet BinaryWriter est créé en passant un objet FileStream à son constructeur.

Le tableau suivant décrit les méthodes couramment utilisées de la classe BinaryWriter.

N ° Sr. Description de la fonction
1

public override void Close()

Il ferme l'objet BinaryWriter et le flux sous-jacent.

2

public virtual void Flush()

Efface tous les tampons de l'enregistreur actuel et entraîne l'écriture de toutes les données mises en mémoire tampon sur le périphérique sous-jacent.

3

public virtual long Seek(int offset, SeekOrigin origin)

Définit la position dans le flux actuel.

4

public virtual void Write(bool value)

Écrit une valeur booléenne d'un octet dans le flux actuel, 0 représentant faux et 1 représentant vrai.

5

public virtual void Write(byte value)

Écrit un octet non signé dans le flux actuel et avance la position du flux d'un octet.

6

public virtual void Write(byte[] buffer)

Écrit un tableau d'octets dans le flux sous-jacent.

sept

public virtual void Write(char ch)

Écrit un caractère Unicode dans le flux actuel et avance la position actuelle du flux conformément au codage utilisé et aux caractères spécifiques en cours d'écriture dans le flux.

8

public virtual void Write(char[] chars)

Écrit un tableau de caractères dans le flux actuel et avance la position actuelle du flux en fonction du codage utilisé et des caractères spécifiques en cours d'écriture dans le flux.

9

public virtual void Write(double value)

Écrit une valeur à virgule flottante de huit octets dans le flux actuel et avance la position du flux de huit octets.

dix

public virtual void Write(int value)

Écrit un entier signé de quatre octets dans le flux actuel et avance la position du flux de quatre octets.

11

public virtual void Write(string value)

Écrit une chaîne avec un préfixe de longueur dans ce flux dans le codage actuel de BinaryWriter et avance la position actuelle du flux en fonction du codage utilisé et des caractères spécifiques en cours d'écriture dans le flux.

Pour une liste complète des méthodes, consultez la documentation Microsoft C #.

Exemple

L'exemple suivant illustre la lecture et l'écriture de données binaires -

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();
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

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