我能够压缩最多1 GB的文件夹,但我必须压缩超过10 GB。
string filePath = C:\Work; // path of the source file
private void compressFile(string filePath)
{
using (ZipFile zip = new ZipFile())
{
zip.AddDirectory(Path.Combine(filePath, "Demo"));
if (File.Exists(Path.Combine(filePath, "Demo.zip")))
{
File.Delete(Path.Combine(filePath, "Demo.zip"));
zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
zip.Save(Path.Combine(filePath, "Demo.zip"));
}
zip.Save(Path.Combine(filePath, "Demo.zip"));
}
}
答案 0 :(得分:5)
我假设这里的问题是内存不足,因为在zip.Save
调用之前所有内容都在内存中。
建议:不要使用DotNetZIP
。如果您改为使用System.IO.Compression.ZipArchive
,则启动,为其提供输出流(在构造函数中)。将它设为FileStream
并且您应该设置它,而不需要首先缓冲内存中的所有内容。
您需要使用ZipArchiveMode.Create