【发布时间】:2014-11-16 12:27:25
【问题描述】:
我在 .Net 4.5 中使用 ZipFile 和 ZipArchive 时遇到了一个奇怪的问题。
ZipFile.CreateFromDirectory 获取目录的所有内容,包括空文件夹。 如果我尝试使用 Windows 资源管理器通过右键单击 > 发送到 > 压缩文件夹来创建相同的 zip 文件,我会收到一条警告消息,指出空文件夹已被忽略。
我正在将生成的 zip 文件加载到在 Apache Tomcat 上运行的应用程序中。此应用程序会为我使用 ZipFile.CreateFromDirectory 生成的 zip 中包含的每个文件引发错误。我通过 Windows 资源管理器手动创建的 zip 可以正常读取。
我怀疑问题出在空的压缩文件夹上,但尚未能够明确得出结论。如果空文件夹是原因,我需要一种方法来使用 ZipFile.CreateFromDirectory 排除空文件夹。
【问题讨论】:
-
我没有.NET 4.5,但是来自remarks section: "文件系统中的目录结构保存在存档中。如果目录为空,则创建一个空存档。” 所以这是设计使然。您要么必须在 tomcat 上的 comsuming 应用程序中修复它,要么必须创建一个临时文件夹,如果可能的话只包含非空文件夹。我还没有找到排除
CreateFromDirectory中空文件夹的方法。 -
谢谢蒂姆。通过 temp 压缩似乎是一个可行的解决方案。如果您将此作为答案,我可以接受。
标签: c# .net zip compression