news 2026/3/22 20:42:51

3.7 BinaryReader和BinaryWriter

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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();// 正确读取"内存数据"}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/21 13:53:55

什么是粗排和精排

在 RAG、推荐系统、搜索引擎等场景中,粗排(Coarse-grained Ranking) 和 精排(Fine-grained Ranking) 是一套 **“先海选、再精选”** 的两级检索排序策略,核心目的是在保证检索效率的前提下,大幅…

作者头像 李华
网站建设 2026/3/20 14:19:12

soular实践教程 - 如何使用soular统一管理TikLab帐号

soular是DevOps工具套件的帐号与门户中心,包含账号管理、认证管理、工作台管理等功能,产品简洁易用、开源免费。本文主要介绍soular的账号管理1、用户管理1.1 创建用户登录系统->系统设置->用户与权限->用户->添加用户添加用户属性说明属性是…

作者头像 李华
网站建设 2026/3/22 15:55:36

sward实践教程 - Markdown的创建与管理

Sward是一款国产开源知识管理工具,提供知识库管理、文档管理、Markdown编辑、内容分享等核心功能,整体设计轻量、简洁且易用。其内置的Markdown功能尤其适用于技术文档编写、博客创作与日常笔记整理等多种场景。本文将重点介绍如何在Sward中添加和管理Ma…

作者头像 李华
网站建设 2026/3/22 9:02:02

靠谱的厌氧池清淤哪有

厌氧池清淤哪家好:专业深度测评开篇:定下基调厌氧池在污水处理中扮演着重要角色,但随着时间的推移,池内会积累大量污泥,影响处理效果。因此,定期清淤成为必不可少的工作。本文将对市面上主要的厌氧池清淤服…

作者头像 李华
网站建设 2026/3/22 4:04:50

【拯救HMI】HMI容错设计:如何减少操作失误并快速纠错?

在复杂、高压的工业环境中,操作失误难以完全避免。容错设计的哲学不是追求“零错误”,而是承认“人会犯错”,并通过系统设计来 “预防错误发生、减轻错误后果、提供快速恢复路径” ,将人为失误对生产系统的影响降至最低。一、 预防…

作者头像 李华
网站建设 2026/3/13 22:05:39

形成性考核管理系统

第三章 需求分析 本章节的内容主要以设计为出发点介绍当初设计该系统的想法与初衷,同时根据用户对系统的实际需求进行构思。参照这些,对系统不断改进、完善,使用户的需求得以满足的同时,提高系统的稳定性以及运行速度的高效性。 3…

作者头像 李华