【发布时间】:2021-03-04 15:53:07
【问题描述】:
我正在创建一个压缩文件,代码如下
ZipArchive MyZipArchive = System.IO.Compression.ZipFile.Open(@"c:\ZipProject\Test.zip", ZipArchiveMode.Update);
然后我将文件添加到 zip 中,如下所示。 fielList 中大约有 10 个文件,每个文件大小为 250 mb
foreach (string f in fileList)
{
MyZipArchive.CreateEntryFromFile(f,Path.GetFileName(f),CompressionLevel.Fastest );
}
在第一个文件中我得到 OutOfMeomry 异常 是否有将大文件添加到 zip 的方法? 我已经尝试了所有的压缩,但结果是一样的
【问题讨论】:
-
您使用的是 32 位构建配置吗?如果你使用 x64 会怎样?
-
我用的是32。32没有选项吗?目前很难升级
-
我升级到 64 位但不幸的是错误仍然存在
-
32 位可以寻址 10 x 250mb,但是您的进程似乎无法找到可用的 连续 内存。我从不建议这样做,但是如果在添加每个文件之前 GC.Collect() 会怎样?
-
您可以创建一个只有压缩逻辑的快速项目,并检查您是否在 32 位中重现问题,如果是,将其更改为 x64 将易于测试并缩小问题的原因。无论如何,如果您由于32 bit procceses memory limit 而在内存中拥有整个文件,则不太可能解决。您可以尝试不同的方法,使用流。
标签: c#