C# BinaryReader

WBOY
WBOYOriginal
2024-09-03 15:22:40603Durchsuche

In C# ist BinaryReader eine Klasse zur Verarbeitung von Binärdaten. Es befindet sich im Namespace System.IO. BinaryReader wird verwendet, um primitive Datentypen als Binärwerte in einem bestimmten Codierungsstream zu lesen. BinaryReader arbeitet mit Stream-Objekten, d. h. um ein BinaryReader-Objekt zu erstellen, müssen wir das Stream-Objekt in seinem Konstruktor übergeben. Die BinaryReader-Klasse verfügt über drei überladene Konstruktoren für die Arbeit mit Binärdaten. Standardmäßig verwendet BinaryReader die UTF-8-Kodierung zum Lesen von Daten, bis wir beim Erstellen seines Objekts andere Zeichenkodierungen angeben.

Syntax mit Erklärung

Wir können ein Objekt von BinaryReader auf drei Arten erstellen, wie unten gezeigt:

BinaryReader binary_reader = new BinaryReader(inputStream);

Die obige Anweisung initialisiert eine neue Instanz von BinaryReader basierend auf dem angegebenen Stream (inputStream) unter Verwendung der UTF-8-Codierung.

BinaryReader binary_reader = new BinaryReader(inputStream, encoding);

Diese Anweisung initialisiert eine neue Instanz von BinaryReader basierend auf dem angegebenen Stream (inputStream) und der durch Encoding angegebenen Codierung.

BinaryReader binary_reader = new BinaryReader(inputStream, encoding, true);

Diese Anweisung funktioniert genauso wie die beiden oben genannten Anweisungen mit einem zusätzlichen Parameter vom Typ Boolean, der verwendet wird, um anzugeben, ob der Benutzer den Stream offen lassen möchte, nachdem das Objekt von BinaryReader verworfen wurde. Dieser Parameter muss „true“ sein, um den Stream geöffnet zu lassen, andernfalls muss er „false“ sein.

Abgesehen von diesen drei Möglichkeiten können wir BinaryReader auch mit den folgenden Anweisungen erstellen:

using(BinaryReader binary_reader = new BinaryReader(File.Open(file_path, FileMode.Open)))
{
//user code
}

In der obigen Anweisung gibt die Methode File.Open() ein Objekt von FileStream zurück und hilft somit bei der Erstellung des Objekts von BinaryReader.

Der Vorteil der Erstellung eines Objekts innerhalb des „using“-Blocks besteht darin, dass der vom Objekt gehaltene Speicher freigegeben wird, wenn die Arbeit des Objekts abgeschlossen ist und nicht mehr benötigt wird.

Wie funktioniert BinaryReader in C#?

BinaryReader wird zum Lesen von Binärinformationen verwendet, d. h. zum Lesen von in Binärdateien gespeicherten Daten. Binärdateien speichern Daten auf eine Weise, die von einer Maschine leicht verstanden werden kann, für den Menschen ist es jedoch sehr schwierig, solche Daten zu verstehen. Um das Verständnis solcher Daten zu erleichtern, wird BinaryReader verwendet. Um mit BinaryReader arbeiten zu können, müssen wir zunächst den System.IO-Namespace in unseren Code importieren. Danach müssen wir mithilfe eines „neuen“ Operators und unter Umgehung des Stream-Objekts im Konstruktor von BinaryReader eine Instanz von BinaryReader erstellen.

Beim Erstellen einer BinaryReader-Instanz stellen wir einen Stream zum Lesen bereit. Anschließend können wir optional die zu verwendende Zeichenkodierung angeben. Wenn wir keine Kodierung angeben, wird standardmäßig die UTF-8-Kodierung verwendet. Darüber hinaus können wir optional angeben, ob der Stream geöffnet werden soll, nachdem das Objekt von BinaryReader entsorgt wurde, wie in der folgenden Anweisung gezeigt.

BinaryReader binary_reader = new BinaryReader(inputStream, encoding, true);

Dann können wir mit Hilfe verschiedener Read()-Methoden von BinaryReader, die für verschiedene Datentypen bereitgestellt werden, Daten aus der Datei lesen.

BinaryReader verfügt über viele Read()-Methoden, die verschiedene Datentypen unterstützen und zum Lesen primitiver Datentypen aus einem Stream verwendet werden. Beispielsweise wird die ReadString()-Methode von BinaryReader verwendet, um das nächste Byte als String-Wert zu lesen und außerdem die aktuelle Position im Stream um ein Byte voranzutreiben.

Read()-Methoden von BinaryReader für verschiedene Datentypen in der folgenden Tabelle:

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 C# Binaryreader

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:

C# BinaryReader

Conclusion

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.

Das obige ist der detaillierte Inhalt vonC# BinaryReader. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:BinaryWriter in C#Nächster Artikel:BinaryWriter in C#