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