SharpZipLib中的奇数错误 - 大小为x,但我预计为y

时间:2009-10-23 14:36:02

标签: c# .net compression zip sharpziplib

使用SharpZipLib时出错。我的代码看起来像

FastZip compressor = new FastZip();
compressor.CreateZip(outputFileName, currentWorkingDirectory, true, "");

这似乎是正确的。但是,我得到一个ZipException声称

size was 0, but I expected 54

我不知道这意味着什么。任何人都有任何见解,或者某种API文档的链接?

3 个答案:

答案 0 :(得分:3)

事实证明问题如下。我试图在给定目录中创建所有项目的.zip文件,并将该.zip文件放在目录中。显然,这个库工作的方式是创建.zip文件,然后逐个文件地读取目录,写入.zip文件。尝试将.zip文件本身添加到zip时发生错误!它可能在此时被拒绝访问该文件或其他内容,从而导致上述错误。简单的解决方法是在另一个目录中创建.ZIP文件。

答案 1 :(得分:1)

Here是其源代码的链接和带有API文档的帮助文件。

答案 2 :(得分:0)

我通过在ProgressHandler事件处理程序中进行处理来解决类似问题,并将ZIPEntry作为发件人传递。由于这是错误情况,因此我们应该停止对zip文件e的进一步处理。ContinueRunning应该设置为false

private void ProcessFileHandler(object sender, ProgressEventArgs e)
        {                    
                ZipEntry newEntry = sender as ZipEntry;
                if (newEntry != null)
                {
                    newEntry.Size = e.Processed;
                }
                e.ContinueRunning = keepRunning;
                return;
         }