news 2026/7/2 1:52:46

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/7/1 8:13:14

手把手教你部署Qwen-Image-2512-ComfyUI,开箱即用不踩坑

手把手教你部署Qwen-Image-2512-ComfyUI&#xff0c;开箱即用不踩坑 随着多模态大模型在图像生成与编辑领域的持续突破&#xff0c;阿里通义千问团队推出的 Qwen-Image-2512 模型凭借其强大的语义理解与高质量出图能力&#xff0c;正迅速成为AIGC工作流中的关键组件。而将其集…

作者头像 李华
网站建设 2026/7/1 15:38:42

多语种语音识别怎么选?SenseVoiceSmall与Wav2Vec2对比评测

多语种语音识别怎么选&#xff1f;SenseVoiceSmall与Wav2Vec2对比评测 1. 引言&#xff1a;多语言语音识别的技术演进与选型挑战 随着全球化内容消费的快速增长&#xff0c;多语种语音识别已成为智能客服、视频字幕生成、跨语言会议记录等场景的核心技术。传统语音识别模型往…

作者头像 李华
网站建设 2026/7/1 8:13:15

FST ITN-ZH核心功能解析|附WebUI批量转换与高级设置实践

FST ITN-ZH核心功能解析&#xff5c;附WebUI批量转换与高级设置实践 在语音识别、自然语言处理和智能客服等场景中&#xff0c;原始文本常包含大量非标准化表达。例如“二零零八年八月八日”、“早上八点半”或“一点二五元”&#xff0c;这些口语化、汉字化的表述难以直接用于…

作者头像 李华
网站建设 2026/7/1 14:22:15

通义千问3-14B安全部署:私有化环境配置注意事项

通义千问3-14B安全部署&#xff1a;私有化环境配置注意事项 1. 引言 随着大模型在企业级场景中的广泛应用&#xff0c;数据隐私与系统可控性成为部署决策的核心考量。通义千问3-14B&#xff08;Qwen3-14B&#xff09;作为阿里云于2025年4月开源的高性能 Dense 模型&#xff0…

作者头像 李华
网站建设 2026/7/1 8:13:17

Qwen3-VL-WEBUI移动端适配:手机访问模型推理教程

Qwen3-VL-WEBUI移动端适配&#xff1a;手机访问模型推理教程 1. 背景与应用场景 随着多模态大模型的快速发展&#xff0c;视觉-语言模型&#xff08;Vision-Language Model, VLM&#xff09;在实际业务中的应用日益广泛。Qwen3-VL 系列作为阿里云推出的最新一代视觉语言模型&…

作者头像 李华
网站建设 2026/7/1 16:37:25

麦橘超然降本部署案例:float8量化让GPU成本节省60%

麦橘超然降本部署案例&#xff1a;float8量化让GPU成本节省60% 1. 背景与挑战 近年来&#xff0c;AI图像生成技术迅速发展&#xff0c;以Stable Diffusion、FLUX.1为代表的扩散模型在艺术创作、设计辅助等领域展现出强大能力。然而&#xff0c;这类模型通常对显存要求极高&am…

作者头像 李华