C#二进制读写BinaryReader、BinaryWriter、BinaryFormatter

1. BinaryReader

BinaryReader类是.NET Framework中的一个类,用于从二进制流中读取基本数据类型的值。它提供了一组方法,可以读取不同类型的数据,如整数、浮点数、字符串等等。使用BinaryReader类可以方便地读取二进制文件或网络流的内容。

1.1 打开二进制文件

在使用BinaryReader之前,首先需要打开一个二进制文件。可以使用FileStream类来打开文件流,然后将其传递给BinaryReader的构造函数。

string filePath = "binaryFile.bin";

using (FileStream fs = new FileStream(filePath, FileMode.Open))

{

using (BinaryReader reader = new BinaryReader(fs))

{

// 在这里进行读取操作

}

}

1.2 读取基本数据类型

BinaryReader提供了一系列的Read方法用于读取不同类型的数据。以下是一些常用的方法:

- ReadBoolean():读取一个布尔值。

- ReadByte():读取一个字节。

- ReadInt16():读取一个短整数。

- ReadInt32():读取一个整数。

- ReadSingle():读取一个单精度浮点数。

- ReadDouble():读取一个双精度浮点数。

- ReadString():读取一个字符串。

下面是一个示例,演示如何使用BinaryReader读取一个二进制文件中的数据:

using (BinaryReader reader = new BinaryReader(fs))

{

bool data1 = reader.ReadBoolean();

byte data2 = reader.ReadByte();

int data3 = reader.ReadInt32();

float data4 = reader.ReadSingle();

string data5 = reader.ReadString();

// 使用读取到的数据进行后续操作

}

2. BinaryWriter

BinaryWriter类是BinaryReader的相对应的写操作类。它可以将基本数据类型的值写入到二进制流中。

2.1 创建二进制文件

与使用BinaryReader读取文件类似,需要使用FileStream来创建一个文件流,然后将其传递给BinaryWriter的构造函数。

string filePath = "binaryFile.bin";

using (FileStream fs = new FileStream(filePath, FileMode.Create))

{

using (BinaryWriter writer = new BinaryWriter(fs))

{

// 在这里进行写入操作

}

}

2.2 写入基本数据类型

BinaryWriter提供了一系列的Write方法用于写入不同类型的数据。以下是一些常用的方法:

- Write(bool value):写入一个布尔值。

- Write(byte value):写入一个字节。

- Write(short value):写入一个短整数。

- Write(int value):写入一个整数。

- Write(float value):写入一个单精度浮点数。

- Write(double value):写入一个双精度浮点数。

- Write(string value):写入一个字符串。

下面是一个示例,演示如何使用BinaryWriter写入数据到二进制文件中:

using (BinaryWriter writer = new BinaryWriter(fs))

{

bool data1 = true;

byte data2 = 100;

int data3 = 12345;

float data4 = 3.14f;

string data5 = "Hello, world!";

writer.Write(data1);

writer.Write(data2);

writer.Write(data3);

writer.Write(data4);

writer.Write(data5);

// 继续进行后续的写入操作

}

3. BinaryFormatter

BinaryFormatter是一个用于序列化和反序列化对象的类。它能够将对象转换为二进制格式,以便于存储或传输,并在需要时恢复为原始对象。

3.1 序列化对象

要使用BinaryFormatter进行序列化,需要创建一个FileStream来打开一个文件流,并将其传递给BinaryFormatter的构造函数。然后可以调用Serialize方法来将对象序列化到文件中。

string filePath = "serializedObject.bin";

using (FileStream fs = new FileStream(filePath, FileMode.Create))

{

BinaryFormatter formatter = new BinaryFormatter();

formatter.Serialize(fs, yourObject);

}

3.2 反序列化对象

要使用BinaryFormatter进行反序列化,可以使用FileStream打开一个文件流,并将其传递给BinaryFormatter的构造函数。然后可以调用Deserialize方法来从文件中反序列化对象。

string filePath = "serializedObject.bin";

using (FileStream fs = new FileStream(filePath, FileMode.Open))

{

BinaryFormatter formatter = new BinaryFormatter();

var deserializedObject = (YourObjectType)formatter.Deserialize(fs);

// 使用反序列化后的对象进行后续操作

}

总结

本文介绍了C#中用于二进制读写的类:BinaryReader、BinaryWriter和BinaryFormatter。通过BinaryReader和BinaryWriter,我们可以方便地读取和写入二进制文件中的基本数据类型。而BinaryFormatter则提供了对象的序列化和反序列化功能,可以将对象转换为二进制格式进行存储或传输。这些类在处理二进制数据的情况下非常有用,能够提高程序的效率和性能。在实际开发中,根据需求选择合适的类来处理二进制数据,可以更好地进行数据操作和处理。

参考链接:

- BinaryReader Class - Microsoft Docs

- BinaryWriter Class - Microsoft Docs

- BinaryFormatter Class - Microsoft Docs

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签