C# 二进制文件的写入和读取
BinaryWriter.Write 和 BinaryReader.ReadInt32 是.NET Framework 中用于读写二进制数据的类。它们提供了一种简单而高效的方式来读写各种二进制数据类型。
BinaryWriter.Write 方法用于将特定类型的数据写入到二进制流中,其中包括整数、浮点数、布尔值、字符和字节数组等。而 BinaryReader.ReadInt32 方法则用于从二进制流中读取一个有符号的 32 位整数。
BinaryWriter 和 BinaryReader 会自动处理数据的分割和解析,因此可以依次写入数据,然后按照相同的顺序依次读取。
在二进制文件中,数据被按照其对应的数据类型进行存储,并且以固定的字节长度表示。例如,一个 Int32 类型的数据在二进制文件中会占用 4 个字节。
写入数据时,BinaryWriter 会根据数据类型将其转换为二进制形式,并按照特定的格式写入到流中。在写入不同类型的数据时,BinaryWriter 会根据数据类型的字节长度进行分割。
读取数据时,BinaryReader 会根据写入时的顺序和数据类型逐个读取并解析出相应的数据。BinaryReader 知道数据的类型和字节长度,因此可以正确地从二进制流中读取数据。
以下是一个完整的示例,演示了依次写入和读取数据的过程:
using (FileStream fileStream = new FileStream("data.bin", FileMode.Create))
using (BinaryWriter writer = new BinaryWriter(fileStream))
{
int intValue = 42;
float floatValue = 3.14f;
string stringValue = "Hello World";
writer.Write(intValue);
writer.Write(floatValue);
writer.Write(stringValue);
}
using (FileStream fileStream = new FileStream("data.bin", FileMode.Open))
using (BinaryReader reader = new BinaryReader(fileStream))
{
int readIntValue = reader.ReadInt32();
float readFloatValue = reader.ReadSingle();
string readStringValue = reader.ReadString();
Console.WriteLine("Read integer value: " + readIntValue);
Console.WriteLine("Read float value: " + readFloatValue);
Console.WriteLine("Read string value: " + readStringValue);
}
在上述示例中,数据按照顺序写入到二进制文件 "data.bin" 中,然后按照相同的顺序从该文件中读取出来。BinaryReader 和 BinaryWriter 会自动处理数据的分割和解析,我们无需手动进行分割或拼接操作。
需要注意的是,在读写二进制数据时,要确保读和写的顺序、类型、大小等都是一致的,否则可能会导致读取错误或数据损坏。
除了 Int32 类型之外,BinaryReader 和 BinaryWriter 还提供了其他方法用于读写不同类型的数据,如 ReadInt16、ReadInt64、WriteSingle、WriteDouble 等,您可以根据实际需求选择适合的方法。另外,使用完毕后,应该及时关闭文件流以释放资源。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2022-08-24 Unity接入Huawei AR Engine
2022-08-24 Unity 笔记UnityXR简单使用
2022-08-24 任正非与身处逆境的员工对话录
2022-08-24 如何在CefSharp中保存cookie