我正在使用SharpZipLib在.NET 3.5项目中创建目录的zip文件,我正在创建这样的存档:
fastZip.CreateZip(Server.MapPath(zipToPath), Server.MapPath(zipFromPath), true, null);
这既不设置文件也不设置文件夹过滤器。
问题是结果zip文件只有该目录中的一些子目录而不是所有子目录,比如说我要压缩的目录有3个子目录,生成的zip文件只有一个子目录
任何想法为什么会发生这种情况?
答案 0 :(得分:1)
有几种可能:
权限 - 由于您使用的是Server.MapPath(),我假设这是一个网站。在部分信任环境中,网站代码几乎没有权限,并且库可能会吞下zip过程中发生的任何权限错误。
文件名 - 可能是文件名长度,文件名中的空格等等问题。由于您没有提供任何示例(文件/目录名称,因此无法缩小它失败了。
答案 1 :(得分:1)
经过一些调试后我发现了问题。 问题的原因是另一个进程在向其添加文件期间访问创建的zip文件,这导致SharpZipLib进程终止并抛出异常,使创建的zip文件只包含一些文件。
有关详情,请阅读我的How to know which processes is using a file under ASP.NET?问题。