Stream是.NET中处理字节读写的抽象基类,FileStream为其具体实现,用于文件操作;通过Read/Write方法进行数据读写,推荐使用using语句管理资源;结合StreamReader/StreamWriter可简化文本处理;注意分块读写大文件、避免线程共享及正确选择FileMode。

在.NET开发中,Stream 是处理字节数据读写的核心抽象类,而 FileStream 是其一个具体实现,用于操作文件系统中的文件。理解它们的使用方法对文件读写、数据传输等场景至关重要。
Stream 基础概念与常用方法
Stream 是一个抽象类,位于 System.IO 命名空间下,定义了所有流的基本行为。它不直接实例化,而是通过其子类(如 FileStream、MemoryStream、NetworkStream 等)来使用。
主要成员方法包括:
Read(byte[] buffer, int offset, int count):从流中读取指定数量的字节到缓冲区。 Write(byte[] buffer, int offset, int count):将字节数组写入流中。 Flush():清空缓冲区,确保数据写入目标。 Seek(long offset, SeekOrigin origin):设置当前流的位置。 Close() 或 Dispose():关闭并释放流资源。
Stream 支持同步和异步操作,例如 ReadAsync、WriteAsync,适用于高并发或响应式应用场景。
FileStream 的创建与文件操作
FileStream 继承自 Stream,用于直接读写磁盘文件。可通过多种方式创建实例,推荐使用 using 语句确保资源正确释放。
示例:写入文本到文件
using (FileStream fs = new FileStream("example.txt", FileMode.Create, FileAccess.Write)){ byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, FileStream!"); fs.Write(data, 0, data.Length);}
示例:从文件读取内容
using (FileStream fs = new FileStream("example.txt", FileMode.Open, FileAccess.Read)){ byte[] buffer = new byte[1024]; int bytesRead = fs.Read(buffer, 0, buffer.Length); string content = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine(content);}
构造函数参数说明:
filePath:文件路径。 FileMode:指定如何打开文件(如 Create、Open、Append 等)。 FileAccess:访问类型(Read、Write、ReadWrite)。
结合 StreamReader 和 StreamWriter 简化文本操作
虽然 FileStream 可处理原始字节,但处理文本时更推荐包装为 StreamReader 或 StreamWriter,它们提供按行读写等高级功能。
示例:使用 StreamWriter 写入文本
using (FileStream fs = new FileStream("log.txt", FileMode.Append))using (StreamWriter writer = new StreamWriter(fs)){ writer.WriteLine("记录一条日志:" + DateTime.Now);}
示例:使用 StreamReader 逐行读取
using (FileStream fs = new FileStream("log.txt", FileMode.Open))using (StreamReader reader = new StreamReader(fs)){ string line; while ((line = reader.ReadLine()) != null) { Console.WriteLine(line); }}
这种组合方式既利用了 FileStream 的底层控制能力,又获得了文本处理的便利性。
常见注意事项与最佳实践
使用 Stream 和 FileStream 时需注意以下几点:
始终使用 using 语句或 try-finally 块确保流被正确关闭。 避免跨线程共享同一个 FileStream 实例,除非明确加锁。 大文件操作建议分块读写,避免内存溢出。 FileMode.Create 会覆盖同名文件,若需追加应使用 FileMode.Append。 异步操作时使用 async/await 模式提升程序响应性。
基本上就这些。掌握 Stream 和 FileStream 的基本用法,能让你在文件操作、序列化、网络传输等场景中更加得心应手。
以上就是.NET中Stream和FileStream的使用方法_Stream FileStream使用教程的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441215.html
微信扫一扫
支付宝扫一扫