当前位置: 首页 > news >正文

3.7 BinaryReader和BinaryWriter

1.BinaryReader和BinaryWriter简介

2.BinaryReader和BinaryWriter示例


1.BinaryReader和BinaryWriter简介

a.BinaryWriter:.NET 基本类型(intfloatstringbyte[])写入流(FileStream、MemoryStream等),按二进制 格式存储(而非文本),体积更小、读写更快 b.BinaryReader:从流中读取由BinaryWriter写入的二进制数据,还原为对应.NET类型,需严格匹配写入顺序

2.BinaryReader和BinaryWriter示例

usingSystem;usingSystem.IO;// ==================== 写入二进制数据(BinaryWriter) ====================publicstaticvoidWriteBinaryFile(stringpath){// 1. 创建文件流(FileMode.Create:覆盖已有文件,FileAccess.Write:只写)using(FileStreamfs=newFileStream(path,FileMode.Create,FileAccess.Write)){// 2. 创建BinaryWriter,关联文件流(可选指定编码,默认UTF-8)using(BinaryWriterwriter=newBinaryWriter(fs)){// 3. 按顺序写入不同类型数据(核心:写入顺序必须和读取顺序一致)writer.Write(100);// 写入int(4字节)writer.Write(3.14f);// 写入float(4字节)writer.Write(true);// 写入bool(1字节)writer.Write("Unity存档");// 写入string(先存长度,再存字节)writer.Write(newbyte[]{0x01,0x02,0x03});// 写入字节数组}// using结束自动释放writer,关闭流}}// ==================== 读取二进制数据(BinaryReader) ====================publicstaticvoidReadBinaryFile(stringpath){if(!File.Exists(path))return;using(FileStreamfs=newFileStream(path,FileMode.Open,FileAccess.Read)){using(BinaryReaderreader=newBinaryReader(fs)){// 3. 按写入顺序读取数据(顺序错会导致数据解析错误)intintValue=reader.ReadInt32();floatfloatValue=reader.ReadSingle();boolboolValue=reader.ReadBoolean();stringstrValue=reader.ReadString();byte[]byteArr=reader.ReadBytes(3);// 读取指定长度的字节数组// 输出验证Console.WriteLine($"Int:{intValue}");// 输出:100Console.WriteLine($"Float:{floatValue}");// 输出:3.14Console.WriteLine($"Bool:{boolValue}");// 输出:TrueConsole.WriteLine($"String:{strValue}");// 输出:Unity存档Console.WriteLine($"ByteArr:{BitConverter.ToString(byteArr)}");// 01-02-03}}}// 调用示例WriteBinaryFile("saveData.bin");ReadBinaryFile("saveData.bin");
using(MemoryStreamms=newMemoryStream())using(BinaryWriterwriter=newBinaryWriter(ms)){writer.Write(123);writer.Write("内存数据");// 重置指针到起始位置,才能读取数据ms.Position=0;using(BinaryReaderreader=newBinaryReader(ms)){intnum=reader.ReadInt32();// 正确读取123stringstr=reader.ReadString();// 正确读取"内存数据"}}
http://www.jsqmd.com/news/249353/

相关文章:

  • 苹果宣布专业图像编辑应用Pixelmator Pro即将登陆iPad
  • 21D非线性检测仪深度解析:如何选择最适合您的【健康预警系统】
  • 在Ubuntu 22.04上使用GitLab和Jenkins部署CI/CD的完整过程
  • 谷歌云与国内云,我用亲身踩坑经历告诉你到底该怎么选
  • 领航技术股份-干接点水浸传感器
  • 什么是粗排和精排
  • Google Ads花钱没单?9大常见设置错误与修复指南
  • 全国冠军代言资源平台排名
  • 手把手教你8款AI论文工具实操:知网维普查重一把过无AIGC痕迹
  • EasyGBS算法算力平台在智慧安防视频监控中的应用实践
  • 大模型强化学习训练全攻略:从RLHF到RLVR,算法、框架与性能优化详解
  • 领航技术股份-水浸传感器哪家好
  • EasyGBS智能化视频监控助力企业安全运营
  • 靠谱的厌氧池清淤哪家妙
  • WHAT - Vercel react-best-practices 系列(一)
  • 数据合规律师必考七大证书:全面提升职场竞争力
  • AI大模型全景指南,从小白到程序员的完全学习手册
  • 救命!挖到就业黄金赛道!2025 网安缺口 327 万,零基础入门到精通,收藏即通关!
  • 携手订单日记,圣力树开启智能升级之路
  • 国家战略急需!网安工程师年薪真能过百万?好不好入行一篇说透!
  • 基于社区宠物管理
  • 8个降AI率工具推荐!研究生高效降AIGC神器合集
  • 基于ASP.NET及HTML的高校官网设计
  • 网安冰火两重天:480 万缺口下,裁员潮 + 一线饱和 + 二三线降薪 30%,核心缺高端实战人才!
  • 告别文献 “乱炖”!宏智树 AI 手把手教你写出有灵魂的文献综述
  • UE5 C++(32):进度条 Progress 的实现
  • 【拯救HMI】HMI国际化设计:多语言界面的十大注意事项
  • AI 写论文哪个软件最好?实测宏智树 AI:毕业论文的 “学术增效神器”
  • 【拯救HMI】HMI容错设计:如何减少操作失误并快速纠错?
  • e算商城域名切换公告