news 2026/9/3 4:14:02

C# 二进制数据读写与BufferStream实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C# 二进制数据读写与BufferStream实战

文章目录

  • 一, 二进制数据读写操作

  • 二,BufferStream字节流临时存储对象


一,二进制数据读写操作:

1,二进制原始数据读写操作 通过BinaryWriter和BinaryReader进行实现,写如何读取性比FileStream性能要高 写入的内容可以是各种数据类型

2, 创建文件流 FileStream 一般用于作为其他类读写操作的文件流

FileStream fs = new FileStream(@"1.txt", FileMode.Create, FileAccess.ReadWrite);

3,创建写入流 传入指定类型

BinaryWriter bw = new BinaryWriter(fs);

4,写入数据:

//3,写入内容 //bw.Write("你好余伟");//字符串类型 //bw.Write(10);//写入整形数据 //bw.Write(true);//写入布尔数据 //bw.Write(12.1);//浮点类型 //写入数据 //传递一个字节数组 bw.Write(new UTF8Encoding().GetBytes("TRUE")); bw.Write(new UTF8Encoding().GetBytes("10")); fs.Flush();// 确保w完整写入 bw.Close(); //关闭写入流 fs.Close();//关闭文件流

5,读取数据文件:

【1】,方法:读取的时候一般采用while循环去读具体代码如下

【2】, br.Close();//释放读取对象

fs.Close();//释放文件流

fs = new FileStream(@"1.txt", FileMode.Open, FileAccess.ReadWrite); //创建一个二进制读取对象 BinaryReader br = new BinaryReader(fs); //一般不会采用单独去读一个数据 //Console.WriteLine(br.ReadString()); //Console.WriteLine(br.ReadInt32());//读取整形的10 //Console.WriteLine(br.ReadBoolean()); //Console.WriteLine(br.ReadDouble()); //读取的时候一般采用while循环去读 byte[] buffer = new byte[fs.Length]; while (br.Read(buffer,0,buffer.Length)>0) //(br.Read(buffer,0,buffer.Length) = 0时证明读取完了 { Console .WriteLine(Encoding.UTF8.GetString(buffer)); } br.Close();//释放读取对象 fs.Close();//释放文件流 Console.ReadKey();

二,BufferStream字节流临时存储对象

1,BufferedStream 缓存区存储对象, 特点:读取性能比较快, 也需要包装其他文件流(FileStream)

2,创建临时存储对象:

BufferedStream b1 = new BufferedStream(File.Create(@"1.txt"));

3, 写入内容 传递一个字节数组

byte[] in1 = new UTF8Encoding().GetBytes("鱼不是余,萎不是伟,鱼是余伟的余,萎是余伟的伟");
b1.Write(in1, 0 , in1.Length);//从字节数组0的位置开始, 写字节数组长度内容


b1.Flush();
b1.Close();

4,创建读取存储对象

b1 = new BufferedStream(File.OpenRead(@"1.txt"));

byte[] arr = new byte[b1.Length];//定义数组存储读取的数据 长度为缓存区的大小

while(b1.Read(arr, 0, arr.Length)>0) //如果数据没读,继续读
{
Console.WriteLine(Encoding.UTF8.GetString(arr));//把arr转成字符串类型


}

Console.ReadKey();


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 22:11:26

免费直链下载终极指南:告别网盘限速烦恼![特殊字符]

免费直链下载终极指南:告别网盘限速烦恼!🚀 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 还在为网盘下载速度慢而烦恼吗?🤔 网盘直…

作者头像 李华
网站建设 2026/9/2 21:23:45

数字孪生三维可视化:Unity3D实战入门必看

Unity3D实战入门:构建工业级数字孪生系统的完整路径你是否曾面对一堆传感器数据,却只能在Excel表格或二维图表中“脑补”设备运行状态?你是否希望让工厂产线、城市管网、风电系统“活起来”,实现所见即所得的实时监控与交互式诊断…

作者头像 李华
网站建设 2026/9/2 21:51:52

IDEA插件版摸鱼看书神器:3种方式在开发环境中高效阅读

IDEA插件版摸鱼看书神器:3种方式在开发环境中高效阅读 【免费下载链接】thief-book-idea IDEA插件版上班摸鱼看书神器 项目地址: https://gitcode.com/gh_mirrors/th/thief-book-idea 在紧张的编码工作间隙,如何在不离开开发环境的情况下享受阅读…

作者头像 李华
网站建设 2026/9/2 21:01:24

5分钟掌握Boss直聘自动化投简历:彻底告别手动求职时代

5分钟掌握Boss直聘自动化投简历:彻底告别手动求职时代 【免费下载链接】boss_batch_push Boss直聘批量投简历,解放双手 项目地址: https://gitcode.com/gh_mirrors/bo/boss_batch_push 还在为每天重复点击"立即沟通"而消耗宝贵时间吗&a…

作者头像 李华
网站建设 2026/9/2 21:03:03

Visual C++运行库一键部署终极方案:告别手动安装的烦恼

Visual C运行库一键部署终极方案:告别手动安装的烦恼 【免费下载链接】vcredist Lifecycle management for the Microsoft Visual C Redistributables 项目地址: https://gitcode.com/gh_mirrors/vcr/vcredist 你是否曾经因为"缺少vcruntime140.dll&quo…

作者头像 李华
网站建设 2026/9/2 10:49:05

ncmdump终极指南:快速解锁网易云NCM音乐格式的完整方案

还在为网易云音乐下载的NCM文件无法在其他播放器上播放而烦恼吗?想要轻松实现音乐格式的自由转换吗?今天我将为你介绍一款简单易用的NCM格式转换工具,让你的音乐收藏真正实现跨平台播放。 【免费下载链接】ncmdump 项目地址: https://gitc…

作者头像 李华