news 2026/6/15 15:44:28

3.8 BufferedStream

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3.8 BufferedStream

1.BufferedStream简介

2.BufferedStream示例


1.BufferedStream简介

BufferedStream是C# System.IO命名空间下的一个流包装类,它的核心作用是在内存中创建缓冲区,减少对磁盘的操作次数 从而提升IO性能 通俗比喻:直接读写底层流(比如磁盘文件)就像直接用手接水龙头的水,每次接一点点,要接很多次;而BufferedStream相当于先拿一 个杯子(缓冲区)接水,接满后再一次性倒到目标容器里,大大减少了操作次数(IO操作是耗时的物理操作,减少次数就能提升 性能)
:a.默认缓冲区的大小是4096字节 b.如果底层流本身已有缓冲(如FileStream默认开启缓冲),使用BufferedStream可能无法提升性能

2.BufferedStream示例

usingSystem;usingSystem.IO;usingSystem.Text;classBufferedStreamWriteDemo{staticvoidMain(){// 文件路径(可替换为你自己的路径)stringfilePath="test_buffered.txt";// 要写入的测试数据(模拟多次小批量写入)stringcontent="这是测试BufferedStream的内容,用于演示缓冲写入的效果。\n";byte[]data=Encoding.UTF8.GetBytes(content);// 使用using语句自动释放流资源(关键!避免内存泄漏和数据丢失)using(FileStreamfileStream=newFileStream(filePath,FileMode.Create,FileAccess.Write))// 包装FileStream,创建BufferedStream,自定义缓冲区大小为8192字节(8KB)using(BufferedStreambufferedStream=newBufferedStream(fileStream,8192)){// 模拟10次小批量写入(如果直接写FileStream,会触发10次磁盘IO;用缓冲流只会在缓冲区满/Flush/关闭时触发)for(inti=0;i<10;i++){// 写入数据到缓冲区(此时并未立即写入磁盘)bufferedStream.Write(data,0,data.Length);Console.WriteLine($"第{i+1}次写入缓冲区完成");}// 强制将缓冲区剩余数据写入底层流(可选,using结束时会自动Flush,但显式调用更安全)bufferedStream.Flush();Console.WriteLine("所有数据已写入文件");}Console.WriteLine("写入完成,按任意键退出...");Console.ReadKey();}}

usingSystem;usingSystem.IO;usingSystem.Text;classBufferedStreamReadDemo{staticvoidMain(){stringfilePath="test_buffered.txt";// 确保文件存在(复用上面写入的文件)if(!File.Exists(filePath)){Console.WriteLine("文件不存在,请先运行写入示例!");return;}using(FileStreamfileStream=newFileStream(filePath,FileMode.Open,FileAccess.Read))using(BufferedStreambufferedStream=newBufferedStream(fileStream)){// 定义读取缓冲区(每次读取1024字节)byte[]readBuffer=newbyte[1024];intbytesRead;StringBuilderresult=newStringBuilder();// 循环读取,直到返回0(表示流结束)while((bytesRead=bufferedStream.Read(readBuffer,0,readBuffer.Length))>0){// 将读取的字节转换为字符串stringchunk=Encoding.UTF8.GetString(readBuffer,0,bytesRead);result.Append(chunk);}// 输出读取结果Console.WriteLine("读取到的文件内容:");Console.WriteLine(result.ToString());}Console.WriteLine("读取完成,按任意键退出...");Console.ReadKey();}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 13:16:12

无需React/Vue适配!Qwen3Guard-Gen-WEB原生组件轻松集成

无需React/Vue适配&#xff01;Qwen3Guard-Gen-WEB原生组件轻松集成 在生成式AI内容爆发的今天&#xff0c;用户输入可能隐藏敏感意图&#xff0c;模型输出也可能无意触碰政策红线。从社交评论到智能客服&#xff0c;内容安全已不再局限于关键词匹配&#xff0c;而需理解语境、…

作者头像 李华
网站建设 2026/6/15 12:11:18

大数据领域数据架构的实时数据同步方案

大数据领域数据架构的实时数据同步方案 关键词&#xff1a;实时数据同步、数据架构、ETL/ELT、变更数据捕获&#xff08;CDC&#xff09;、消息队列、数据管道、分布式系统 摘要&#xff1a;本文深入探讨大数据领域实时数据同步的核心技术与架构设计&#xff0c;系统解析变更数…

作者头像 李华
网站建设 2026/6/15 12:13:20

踩过这些坑才懂!运行SenseVoiceSmall的正确姿势

踩过这些坑才懂&#xff01;运行SenseVoiceSmall的正确姿势 1. 引言&#xff1a;为什么选择 SenseVoiceSmall&#xff1f; 在语音识别技术快速发展的今天&#xff0c;传统ASR&#xff08;自动语音识别&#xff09;系统已无法满足日益复杂的实际需求。用户不仅希望“听清”说了…

作者头像 李华
网站建设 2026/6/15 12:03:16

YOLO-v5实战案例:无人机避障系统中的目标感知模块

YOLO-v5实战案例&#xff1a;无人机避障系统中的目标感知模块 1. 引言 1.1 业务场景描述 在无人机自主飞行任务中&#xff0c;实时环境感知是实现安全避障的核心能力。尤其是在复杂城市环境或低空飞行场景下&#xff0c;无人机需要快速识别前方的障碍物&#xff08;如建筑物…

作者头像 李华
网站建设 2026/6/15 15:16:12

AutoGLM-Phone-9B模型详解:移动端高效多模态融合方案

AutoGLM-Phone-9B模型详解&#xff1a;移动端高效多模态融合方案 随着边缘智能的快速发展&#xff0c;终端侧大模型正逐步成为人机交互的核心引擎。AutoGLM-Phone-9B作为一款专为移动设备优化的多模态大语言模型&#xff0c;凭借其轻量化架构与跨模态融合能力&#xff0c;在资…

作者头像 李华
网站建设 2026/6/15 14:13:14

Open-AutoGLM部署后无法响应?检查这几点

Open-AutoGLM部署后无法响应&#xff1f;检查这几点 1. 引言 1.1 问题背景与场景描述 Open-AutoGLM 是智谱开源的手机端 AI Agent 框架&#xff0c;基于视觉语言模型&#xff08;VLM&#xff09;实现多模态理解与自动化操作。用户只需输入自然语言指令&#xff0c;如“打开小…

作者头像 李华