news 2026/4/23 12:12:52

3.2 FileStream

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3.2 FileStream

1.FileStream


1.FileStream

FileStream操作的是字节数组,读写文本需配合Encoding(:UTF8)转换1).构造函数 这是使用FileStream的第一步,用于打开/创建文件并指定操作模式
// 参数:文件路径、文件模式、文件访问权限、文件共享方式FileStreamfs=newFileStream("test.txt",FileMode.OpenOrCreate,// 不存在则创建,存在则打开FileAccess.ReadWrite,// 可读可写FileShare.None// 不允许其他程序共享);


2).读取字节(Read()/ReadAsync())a.Read(byte[]buffer,intoffset,intcount):从流中读取字节到缓冲区,返回实 际读取的字节数(到文件末尾时返回0) b.ReadAsync:异步版本,避免阻塞主线程(适合大文件)
usingSystem;usingSystem.IO;usingSystem.Text;classProgram{staticvoidMain(){// 确保文件存在并写入测试内容File.WriteAllText("test.txt","Hello FileStream!");using(FileStreamfs=newFileStream("test.txt",FileMode.Open,FileAccess.Read)){byte[]buffer=newbyte[1024];// 缓冲区,存储读取的字节intbytesRead;// 实际读取的字节数StringBuildersb=newStringBuilder();// 循环读取,直到文件末尾(bytesRead=0)while((bytesRead=fs.Read(buffer,0,buffer.Length))>0){// 将字节转换为字符串(UTF8编码)stringcontent=Encoding.UTF8.GetString(buffer,0,bytesRead);sb.Append(content);}Console.WriteLine("读取的内容:"+sb.ToString());// 输出:读取的内容:Hello FileStream!}}}

3).写入字节:Write()/WriteAsync()a.Write(byte[]buffer,intoffset,intcount):将缓冲区中的字节写入流 b.WriteAsync:异步写入,适合大文件/高并发场景
usingSystem;usingSystem.IO;usingSystem.Text;classProgram{staticvoidMain(){stringcontent="这是要写入的测试内容";// 将字符串转换为字节数组(UTF8编码)byte[]buffer=Encoding.UTF8.GetBytes(content);using(FileStreamfs=newFileStream("test.txt",FileMode.Create,FileAccess.Write)){// 写入字节数组(从索引0开始,写入全部长度)fs.Write(buffer,0,buffer.Length);Console.WriteLine("内容写入完成!");}// 验证写入结果Console.WriteLine("文件内容:"+File.ReadAllText("test.txt"));// 输出:文件内容:这是要写入的测试内容}}

4).调整流位置:Seek()Seek(longoffset,SeekOriginorigin):调整文件指针的位置,用于随机读写(比如跳 过前N个字节、回到文件开头) a.offset:偏移量("正数向后,负数向前")b.SeekOrigin:偏移原点("Begin/Current/End")
usingSystem;usingSystem.IO;usingSystem.Text;classProgram{staticvoidMain(){File.WriteAllText("test.txt","0123456789");using(FileStreamfs=newFileStream("test.txt",FileMode.Open,FileAccess.Read)){// 1. 定位到第3个字节(跳过前2个:0、1)fs.Seek(2,SeekOrigin.Begin);byte[]buffer=newbyte[2];fs.Read(buffer,0,2);Console.WriteLine(Encoding.UTF8.GetString(buffer));// 输出:23// 2. 从当前位置向后移动1个字节fs.Seek(1,SeekOrigin.Current);fs.Read(buffer,0,2);Console.WriteLine(Encoding.UTF8.GetString(buffer));// 输出:45// 3. 定位到文件末尾前2个字节fs.Seek(-2,SeekOrigin.End);fs.Read(buffer,0,2);Console.WriteLine(Encoding.UTF8.GetString(buffer));// 输出:89}}}

5).刷新缓冲区:Flush()/FlushAsync()FileStream会将写入的字节先存入内存缓冲区,达到一定大小后才写入磁盘。Flush()强制将 缓冲区的所有数据立即写入磁盘(避免数据丢失)
using(FileStreamfs=newFileStream("test.txt",FileMode.Create,FileAccess.Write)){byte[]buffer=Encoding.UTF8.GetBytes("测试Flush");fs.Write(buffer,0,buffer.Length);fs.Flush();// 强制写入磁盘Console.WriteLine("缓冲区已刷新到磁盘");}

6).释放资源:Close()/Dispose()a.Close():关闭流并释放资源(等价于Dispose())。 b.Dispose():释放流占用的所有资源(文件句柄、内存等)

7).复制流:CopyTo()/CopyToAsync()将当前FileStream的内容复制到另一个流(比如复制文件)
using(FileStreamsource=newFileStream("source.txt",FileMode.Open,FileAccess.Read))using(FileStreamtarget=newFileStream("target.txt",FileMode.Create,FileAccess.Write)){// 将source的内容复制到targetsource.CopyTo(target);Console.WriteLine("文件复制完成!");}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 3:48:51

吐血推荐9个AI论文写作软件,研究生轻松搞定毕业论文!

吐血推荐9个AI论文写作软件,研究生轻松搞定毕业论文! AI 工具助力论文写作,研究生也能轻松应对 随着人工智能技术的不断发展,AI 工具在学术领域的应用越来越广泛。尤其是在论文写作过程中,AI 工具不仅能够显著降低 AIG…

作者头像 李华
网站建设 2026/4/15 13:09:05

实时日志分析:ELK Stack深度优化指南

实时日志分析:ELK Stack深度优化指南 引言 在DevOps、故障排查、用户行为分析等场景中,实时日志分析是企业IT系统的“神经中枢”。它能帮助团队快速定位问题(比如服务器宕机、接口超时)、监控系统状态(比如CPU使用率、…

作者头像 李华
网站建设 2026/4/18 13:26:48

HY-MT1.5-7B支持哪些民族语言?方言翻译实测与部署说明

HY-MT1.5-7B支持哪些民族语言?方言翻译实测与部署说明 1. 引言:腾讯开源的混元翻译大模型 随着多语言交流需求的不断增长,高质量、低延迟的机器翻译系统成为跨语言沟通的关键基础设施。腾讯近期开源了其混元翻译模型1.5版本(HY-…

作者头像 李华
网站建设 2026/4/12 15:42:09

HY-MT1.5镜像部署测评:一键启动,开发者效率提升指南

HY-MT1.5镜像部署测评:一键启动,开发者效率提升指南 1. 背景与技术选型动因 随着全球化业务的加速推进,高质量、低延迟的翻译能力已成为多语言应用的核心基础设施。传统商业翻译 API 虽然稳定,但在定制化、数据隐私和成本控制方面…

作者头像 李华
网站建设 2026/4/15 21:52:49

HY-MT1.5-7B vs HY-MT1.5-1.8B实战对比:选型建议与部署优化

HY-MT1.5-7B vs HY-MT1.5-1.8B实战对比:选型建议与部署优化 1. 背景与选型需求 随着多语言交流场景的不断扩展,高质量、低延迟的翻译模型成为智能硬件、跨境服务和内容本地化等领域的核心基础设施。腾讯近期开源了混元翻译大模型1.5版本(HY…

作者头像 李华
网站建设 2026/3/25 11:56:49

开源翻译模型安全性:HY-MT1.5数据隐私保护机制解析

开源翻译模型安全性:HY-MT1.5数据隐私保护机制解析 1. 引言:开源翻译模型的安全挑战与HY-MT1.5的定位 随着大语言模型在多语言场景中的广泛应用,翻译模型不仅承担着跨语言沟通的桥梁作用,也日益成为企业级应用、政府服务和边缘计…

作者头像 李华