【发布时间】:2013-12-17 12:16:21
【问题描述】:
我正在通过以下方式使用 dotnet zip:
using (ZipFile zip = new ZipFile(@"E:\test2.zip"))
{
zip.ParallelDeflateThreshold = -1;
zip.UseZip64WhenSaving = Zip64Option.Always;
zip.SaveProgress += SaveProgress;
zip.AddDirectory(@"E:\Samples");
zip.Save(@"E:\test2.zip");
}
在我尝试压缩包含近 100 万个文件的目录之前,这段代码运行良好。
场景:
1。 如果文件比较重:
该文件夹包含928614个文件分配子目录,完整的文件夹大小为134GB,但大部分文件只有几kb,最大的大约60mb。
应用程序在文件 870000 周围的保存操作期间卡住了。我通过监听进度事件知道这一点。
public void SaveProgress(object sender, SaveProgressEventArgs e) {
if (e.EntriesSaved != 0)
{
System.Console.WriteLine(e.EntriesSaved.ToString());
}
我让应用程序运行了一整夜,但什么也没发生,在其中一次测试运行中应用程序完全崩溃(就像有人在 Visual Studio 中按 CTRL F5)
我也尝试运行dotnetzip工具包提供的ZipIt.exe,同样的事情发生了。
2.如果文件非常小(测试目的)
该包包含970000个文件,分配子目录所有文件都是一个带有字母“a”的txt文件,完整文件夹大小为1mb。
保存操作会遍历所有文件(我可以使用 saveProgress 事件看到) 但最后我得到一个 outofmemoryexception 。
我还尝试运行 dotnetzip 工具包提供的 ZipIt.exe,在这种情况下,操作成功完成(太混乱了!)
dotnetzip 支持的最大整数数量是多少?有解决办法吗? 提前非常感谢。
【问题讨论】:
标签: c# .net compression zip dotnetzip