You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

写入约291GB.gz文件遇文件系统限制错误,求StreamWriter解决方案

写入大体积.gz文件时触发文件系统限制错误

当向.gz文件写入数据,文件大小达到约291,261,644,800字节时,触发错误:

请求的操作因文件系统限制无法完成

对应的调用栈如下:

at System.IO.Strategies.BufferedFileStreamStrategy.WriteSpan(ReadOnlySpan`1 source, ArraySegment`1 arraySegment)
at System.IO.Strategies.BufferedFileStreamStrategy.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
at System.IO.StreamWriter.WriteLine(String value)

核心代码示例

using var reader = new StreamReader(inputFilename);
using var writer = new StreamWriter(new GZipStream(File.Create(outputFilename), CompressionMode.Compress));

while ((line = reader.ReadLine()) != null)
{
    // 处理line
    writer.WriteLine(line);
}

已完成排查

  • 存储分区为NTFS格式,且未存满
  • 输出文件未被其他程序锁定或打开

当前临时方案及问题

目前临时解决方案是将数据写入多个小文件,之后在Linux系统中用cat命令合并,但该方式耗时翻倍,且会将原本约500GB的文件所需存储量翻倍,并不理想。怀疑使用StreamWriter时存在疏漏。


更新1:尝试预分配空间仍未解决

尝试以下代码指定预分配500GB空间,但仍遇到相同错误:

var options = new FileStreamOptions
{
    Access = FileAccess.Write,
    Mode = FileMode.Create,
    PreallocationSize = 500000000000 // 500 GB
};
using var writer = new StreamWriter(filename, options);

内容的提问来源于stack exchange,提问作者Dr. Strangelove

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:17:40