当前位置:首页 > C# > 正文

C# 二进制文件读写详解(使用 BinaryReader 和 BinaryWriter 实现高效数据存储)

在 C# 开发中,经常需要处理文件的读写操作。除了常见的文本文件外,二进制文件因其高效、紧凑、安全等优势,在游戏开发、配置保存、网络通信等场景中被广泛使用。本文将带你从零开始掌握 BinaryReaderBinaryWriter 的基本用法,即使是编程小白也能轻松上手!

C# 二进制文件读写详解(使用 BinaryReader 和 BinaryWriter 实现高效数据存储)  二进制文件读写 文件操作 第1张

什么是 BinaryReader 和 BinaryWriter?

BinaryWriter 用于将原始数据类型(如 int、float、string 等)以二进制格式写入流中;而 BinaryReader 则用于从二进制流中按顺序读取这些数据。它们通常配合 FileStream 使用,实现对磁盘文件的直接二进制操作。

这种读写方式比文本格式更节省空间,且避免了字符串解析的开销,是 C# 文件操作 中的重要技能。

第一步:使用 BinaryWriter 写入二进制文件

下面是一个完整的示例,演示如何将姓名、年龄和工资信息写入一个名为 employee.dat 的二进制文件:

using System;using System.IO;class Program{    static void Main()    {        string fileName = "employee.dat";        // 使用 using 确保资源自动释放        using (FileStream fs = new FileStream(fileName, FileMode.Create))        using (BinaryWriter writer = new BinaryWriter(fs))        {            // 写入字符串、整数和浮点数            writer.Write("张三");            writer.Write(28);            writer.Write(12500.50f);            Console.WriteLine("数据已成功写入二进制文件!");        }    }}

注意:这里使用了 using 语句,它能自动调用 Dispose() 方法,确保文件流被正确关闭,这是良好的编程习惯。

第二步:使用 BinaryReader 读取二进制文件

读取时必须严格按照写入的顺序进行,否则会得到错误的数据。以下是对应的读取代码:

using System;using System.IO;class Program{    static void Main()    {        string fileName = "employee.dat";        if (!File.Exists(fileName))        {            Console.WriteLine("文件不存在!");            return;        }        using (FileStream fs = new FileStream(fileName, FileMode.Open))        using (BinaryReader reader = new BinaryReader(fs))        {            // 按写入顺序读取            string name = reader.ReadString();            int age = reader.ReadInt32();            float salary = reader.ReadSingle();            Console.WriteLine($"姓名: {name}");            Console.WriteLine($"年龄: {age}");            Console.WriteLine($"工资: {salary:C}");        }    }}

运行后,你将看到控制台输出原始写入的数据。这说明 C# BinaryReader 成功还原了二进制内容。

注意事项与最佳实践

  • 写入和读取的顺序必须严格一致,否则会引发异常或读取错误数据。
  • 建议始终使用 using 语句管理流对象,防止资源泄漏。
  • 对于复杂对象(如自定义类),可考虑序列化(如 BinaryFormatter,但注意其安全性问题)或手动拆解为基本类型再写入。
  • 二进制文件不具备可读性,调试时需借助十六进制编辑器查看内容。

总结

通过本文,你已经掌握了 C# BinaryWriterBinaryReader 的基本用法,能够完成简单的二进制文件读写任务。这项技能在需要高性能数据存储的场景中非常实用,是每位 C# 开发者应掌握的 二进制文件读写 基础。

赶快动手试试吧!你可以尝试写入多个员工信息,或者保存游戏存档数据,巩固所学知识。