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

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

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

size was 0, but I expected 54

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

有帮助吗?

解决方案

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

其他提示

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

我通过在ProgressHandler事件处理程序中处理它来修复类似的问题,并将ZIPEntry作为Sender传递。因为这是错误条件所以我们应该停止进一步处理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;
         }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top