使用SharpZipLib时出错。我的代码看起来像
FastZip compressor = new FastZip();
compressor.CreateZip(outputFileName, currentWorkingDirectory, true, "");
这似乎是正确的。但是,我得到一个ZipException声称
size was 0, but I expected 54
我不知道这意味着什么。任何人都有任何见解,或者某种API文档的链接?
答案 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;
}