Maison > Article > développement back-end > Lecteur binaire C#
En C#, BinaryReader est une classe utilisée pour gérer les données binaires. Il se trouve sous l’espace de noms System.IO. BinaryReader est utilisé pour lire des types de données primitifs sous forme de valeurs binaires dans un flux de codage particulier. BinaryReader fonctionne avec l'objet Stream, c'est-à-dire que pour créer un objet de BinaryReader, nous devons transmettre l'objet Stream dans son constructeur. La classe BinaryReader dispose de trois constructeurs surchargés pour travailler avec des données binaires. Par défaut, BinaryReader utilise le codage UTF-8 pour lire les données jusqu'à ce que nous spécifiions d'autres codages de caractères lors de la création de son objet.
Nous pouvons créer un objet de BinaryReader de trois manières comme indiqué ci-dessous :
BinaryReader binary_reader = new BinaryReader(inputStream);
L'instruction ci-dessus initialise une nouvelle instance de BinaryReader basée sur le flux spécifié (inputStream) en utilisant l'encodage UTF-8.
BinaryReader binary_reader = new BinaryReader(inputStream, encoding);
Cette instruction initialise une nouvelle instance de BinaryReader en fonction du flux spécifié (inputStream) et de l'encodage spécifié par encoding.
BinaryReader binary_reader = new BinaryReader(inputStream, encoding, true);
Cette instruction fonctionne de la même manière que les deux instructions ci-dessus avec un paramètre supplémentaire de type Boolean qui est utilisé pour spécifier si l'utilisateur souhaite laisser le flux ouvert après la suppression de l'objet de BinaryReader. Ce paramètre doit être « vrai » pour laisser le flux ouvert, sinon il doit être « faux ».
En dehors de ces trois manières, nous pouvons également créer BinaryReader en utilisant les instructions suivantes :
using(BinaryReader binary_reader = new BinaryReader(File.Open(file_path, FileMode.Open))) { //user code }
Dans l'instruction ci-dessus, la méthode File.Open() renvoie un objet de FileStream et aide ainsi à créer l'objet de BinaryReader.
L'avantage de créer un objet à l'intérieur du bloc « using » est qu'il libère la mémoire détenue par l'objet lorsque le travail de l'objet est terminé et qu'il n'est plus nécessaire.
BinaryReader est utilisé pour lire des informations binaires, c'est-à-dire qu'il est utilisé pour lire des données stockées dans des fichiers binaires. Le fichier binaire stocke les données d'une manière qui peut être facilement comprise par une machine, mais pour l'homme, il est très difficile de comprendre ces données. Pour aider à comprendre ces données, BinaryReader est utilisé. Afin de travailler avec BinaryReader, nous devons d'abord importer l'espace de noms System.IO dans notre code. Après cela, nous devons créer une instance de BinaryReader à l'aide d'un « nouvel » opérateur et en contournant l'objet Stream à l'intérieur du constructeur de BinaryReader.
Lors de la création d'une instance de BinaryReader, nous fournissons un flux à partir duquel lire, puis nous pouvons éventuellement spécifier le codage de caractères à utiliser si nous ne spécifions pas le codage, par défaut le codage UTF-8 est utilisé. Parallèlement à cela, nous pouvons éventuellement spécifier si nous souhaitons que le flux soit ouvert après la suppression de l'objet de BinaryReader, comme indiqué dans l'instruction ci-dessous.
BinaryReader binary_reader = new BinaryReader(inputStream, encoding, true);
Ensuite, à l'aide de différentes méthodes Read() de BinaryReader qui sont fournies pour différents types de données, nous pouvons lire les données du fichier.
BinaryReader possède de nombreuses méthodes Read() qui prennent en charge différents types de données et sont utilisées pour lire les types de données primitifs à partir d'un flux. Par exemple, la méthode ReadString() de BinaryReader est utilisée pour lire l'octet suivant en tant que valeur de chaîne et avance également la position actuelle dans le flux d'un octet.
Méthodes Read() de BinaryReader pour différents types de données dans le tableau suivant :
Method | Description |
Read() | It is used to read characters from an underlying stream and it also advances the current position of the stream according to the Encoding used and the specific character being read from the stream. |
ReadBoolean() | It is used to read the Boolean value from the stream and it also advances the current position of the stream by one byte. |
ReadByte() | It is used to read the next byte from the current stream and it also advances the current position of the stream by one byte. |
ReadChar() | It is used to read the next character from the current stream and it also advances the current position of the stream according to the Encoding used and the specific character being read from the stream. |
ReadDecimal() | It is used to read the decimal value from the current stream and it also advances the current position of the stream by sixteen bytes. |
ReadDouble() | It is used to read an 8-byte floating-point value from the current stream and advances the current position of the stream by eight bytes. |
ReadInt32() | It is used to read a 4-byte signed integer from the current stream and also it advances the current position of the stream by four bytes. |
ReadString() | It is used to read a string from the current stream. |
Example of creating a file using BinaryWriter and reading it using BInaryReader.
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp4 { public class Program { string filePath = "E:\\Content\\binaryFile.dat"; public void WriteFile() { try { //checking if the file already exists if (File.Exists(filePath)) { File.Delete(filePath); } FileStream stream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite); //creating binary file using BinaryWriter using (BinaryWriter writer = new BinaryWriter(stream)) { writer.Write("This is string"); writer.Write(100.53); writer.Write(true); } } catch(Exception ex) { Console.WriteLine(ex.Message); } } public void ReadFile() { try { //creating an object of Stream FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); //creating BinaryReader using Stream object using (BinaryReader reader = new BinaryReader(stream)) { //reading data using Read() methods of different data types Console.WriteLine("String Value : " + reader.ReadString()); Console.WriteLine("Double Value : " + reader.ReadDouble()); Console.WriteLine("Boolean Value : " + reader.ReadBoolean()); } } catch(Exception ex) { Console.WriteLine(ex.Message); } } } public class BinaryReaderDemo { static void Main(string[] args) { Program obj = new Program(); obj.WriteFile(); obj.ReadFile(); Console.ReadKey(); } } }
Output:
BinaryReader is used to read primitive data types as binary values in a specific encoding stream. If not defined explicitly, by default BinaryReader uses UTF-8 encoding to read data. Stream object needs to be passed inside the constructor of BinaryReader in order to create its instance.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!