全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C# 怎么使用 FileStream 读写大文件_C# FileStream 大文件读写技巧

使用FileStream分块读写可安全处理大文件,避免内存溢出。通过设置4KB-64KB缓冲区,循环调用Read/Write方法逐段处理数据,结合async/await提升I/O性能,合理控制缓冲区大小和对象创建,能高效稳定地操作GB级文件。

处理大文件时,直接一次性读取或写入容易导致内存溢出。C# 中的 FileStream 配合分块读写可以高效安全地操作大文件。关键在于避免将整个文件加载到内存中,而是通过缓冲区逐步处理。

使用 FileStream 分块读取大文件

通过指定缓冲区大小,逐段读取文件内容,适合处理 GB 级别的文件。

  • 设置合适的缓冲区大小(如 4KB ~ 64KB),平衡性能与内存占用
  • 使用 Read 方法循环读取,直到返回值为 0,表示文件结束
  • 可配合 StreamReader 或 BinaryReader 处理文本或二进制数据

示例代码:

using (var fs = new FileStream("largefile.txt", FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 4096, useAsync: false))
{
    byte[] buffer = new byte[4096];
    int bytesRead;
    while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
    {
        // 处理 buffer 中的 bytesRead 个字节
        ProcessChunk(buffer, bytesRead);
    }
}

使用 FileStream 分块写入大文件

写入时同样应避免一次性写入全部数据,采用缓冲写入方式更稳定。

  • 打开文件时使用 FileMode.Create 创建新文件
  • 每次写入一个数据块,及时释放内存
  • useAsync 可设为 true 实现异步写入(需配合异步模式)

示例代码:

using (var fs = new FileStream("output.dat", FileMode.Create, FileAccess.Write, FileShare.None, bufferSize: 8192))
{
    foreach (var chunk in GetFileChunks())
    {
        fs.Write(chunk, 0, chunk.Length);
    }
}

提升性能的关键技巧

合理配置参数和使用模式能显著提升大文件处理效率。

  • bufferSize 建议设为 4096 的倍数,通常 8KB~64KB 范围内效果较好
  • 对超大文件(>2GB),确保使用 long 类型获取长度,避免 int 溢出
  • 若需频繁随机访问,可结合 Position 属性跳转位置
  • useAsync 设为 true 时,配合 async/await 可提升 I/O 并发能力
  • 避免在循环中创建大量临时对象,减少 GC 压力

基本上就这些。正确使用 FileStream 分块读写,再大的文件也能平稳处理。


# 字节  # access  # ai  # stream  # c#  # 内存占用  # int  # 循环  # FileStream  # 并发  # 对象  # 异步  # position  # 大文件  # 设为  # 也能  # 较好  # 跳转  # 关键在于  # 值为  # 再大  # 容易导致  # 加载 


相关文章: 如何在Ubuntu系统下快速搭建WordPress个人网站?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  建站主机空间推荐 高性价比配置与快速部署方案解析  建站之星代理平台如何选择最佳方案?  山东云建站价格为何差异显著?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  宿州网站制作公司兴策,安徽省低保查询网站?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  如何打造高效商业网站?建站目的决定转化率  临沂网站制作企业,临沂第三中学官方网站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何快速查询域名建站关键信息?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  高性能网站服务器部署指南:稳定运行与安全配置优化方案  实现虚拟支付需哪些建站技术支撑?  如何通过二级域名建站提升品牌影响力?  公司网站制作价格怎么算,公司办个官网需要多少钱?  如何在自有机房高效搭建专业网站?  建站VPS推荐:2025年高性能服务器配置指南  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  如何通过主机屋免费建站教程十分钟搭建网站?  建站之星价格显示格式升级,你的预算足够吗?  如何设计高效校园网站?  如何快速上传建站程序避免常见错误?  智能起名网站制作软件有哪些,制作logo的软件?  利用JavaScript实现拖拽改变元素大小  如何制作算命网站,怎么注册算命网站?  七夕网站制作视频,七夕大促活动怎么报名?  简历在线制作网站免费版,如何创建个人简历?  网站图片在线制作软件,怎么在图片上做链接?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  焦点电影公司作品,电影焦点结局是什么?  学校为何禁止电信移动建设网站?  如何通过多用户协作模板快速搭建高效企业网站?  宝塔建站助手安装配置与建站模板使用全流程解析  北京网站制作网页,网站升级改版需要多久?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  建站主机如何选?性能与价格怎样平衡?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何用免费手机建站系统零基础打造专业网站?  如何在新浪SAE免费搭建个人博客?  ,如何利用word制作宣传手册?  建站主机选哪种环境更利于SEO优化?  建站之星伪静态规则如何设置?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  建站主机解析:虚拟主机配置与服务器选择指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。