turrier.fr

Source : ct|22.09.09

< Tutoriels Informatique, Multimédia, Chinois

Lire et écrire un fichier binaire en Csharp ou en VB

Les langages C# et VB offrent diverses classes et méthodes permettant de manipuler facilement les fichiers binaires.
La classe BinaryReader (Espace de noms System.IO, Assembly mscorlib.dll) permet de lire les fichiers octet par octet. La méthode ReadByte, de la classe BinaryReader, permet de lire l'octet suivant, en partant de la position courante, et avance la position courante d'un octet. La classe BinaryWriter (Espace de noms System.IO, Assembly mscorlib.dll) permet d’écrire les fichiers octet par octet. La méthode Write, de la classe BinaryWriter permet d’écrire un octet non signé à la position courante, et avance la position courante d'un octet.
Les objets de la classe FileStream permettent de créer, ouvrir, fermer, lire et écrire les fichiers avec lesquels ils sont associés. Ces objets permettent d’accéder à n’importe quel octet du fichier à l’aide de la méthode Seek. La méthode Seek permet de définir la position courante comme étant celle de n’importe quel octet du fichier.

Dans ce tutorial nous allons, avec le Framework .net 2.0 et l'IDE SharpDevelop 2.2 :
1) Créer un programme exemple;
2) Vérifer les résultats.

Création du programme exemple

Avec Sharpdevelop, créer un projet C# de type console appelé « EssaiFichierBinaire » par exemple.

Application console

Placer le code source suivant dans Program.cs :

using System;
using System.IO;
namespace TestFichierBin
{
class Program
{
public static void Main(string[] args)
{
string nom="monfichier.dat"; byte i;
BinaryReader br = null;
BinaryWriter bw = null;
FileStream fs = null;
//Ecriture d'octets dans le fichier
bw = new BinaryWriter(File.Create(nom));
i=0; bw.Write(i);i=1; bw.Write(i); i=2; bw.Write(i);
bw.Close();
fs = File.Open(nom, FileMode.Open);
//Lecture du fichier à partir de la position 0
fs.Seek(0, SeekOrigin.Begin);
br = new BinaryReader(fs);
while (fs.Position < fs.Length) Console.Write(br.ReadByte());
Console.WriteLine("\n-----------------");
//fin du programme
br.Close();
bw.Close();
Console.ReadKey(true);
}
}
}

Construire la solution (F8) puis exécuter le programme (F5).

En VB, le code équivalent est le suivant :

Imports System
Imports System.IO
Module Program
Sub Main()
Dim nom as String ="monfichier.dat" : Dim i as Byte
Dim br as BinaryReader
Dim bw as BinaryWriter
Dim fs as FileStream
'Ecriture d'octets dans le fichier
bw = new BinaryWriter(File.Create(nom))
i=0 : bw.Write(i):i=1: bw.Write(i): i=2: bw.Write(i)
bw.Close()
fs = File.Open(nom, FileMode.Open)
'Lecture du fichier à partir de la position 0
fs.Seek(0, SeekOrigin.Begin)
br = new BinaryReader(fs)
While (fs.Position < fs.Length)
Console.Write(br.ReadByte())
End While
Console.WriteLine(chr(10) +"-----------------")
'fin du programme
br.Close()
bw.Close()
Console.ReadKey(true)
End Sub
End Module

Vérification du résultat

Ce programme permet de :
- Créer un fichier binaire nommé « monfichier.dat »;
- Ecrire les octets 00, 01 et 02 aux emplacements 0, 1 et 2 de ce fichier;
- Ouvrir de fichier et de le lire;
- Afficher son contenu dans la fenêtre de la console Windows.

Il est à noter que l'instruction Console.ReadKey(true) située à la fin du programme permet d’éviter que la fenêtre de la console ne se referme trop vite. Le résultat obtenu à l’exécution est le suivant.

Programme exécuté

Le fichier « monfichier.dat » se trouve dans le répertoire du programme.

Fichier binaire

En ouvrant le fichier avec un éditeur hexadécimal, on retrouve bien le contenu attendu.

Contenu du fichier binaire


Valid XHTML 1.0 Transitional

© http://turrier.fr (2007)