Help in creating Zip files from .Net and reading them from Java我正在尝试从.Net创建一个Zip文件,该文件可以从Java代码读取。 我已经使用SharpZipLib创建了Zip文件,但是如果生成的文件根据#ZipLib库的CheckZip函数是否有效并且可以通过WinZip或WinRar成功解压缩,则在尝试对其进行解压缩时总是会出现错误在Java中使用Java.Utils.Zip类。 问题似乎是在SharpZipLib写的错误标题中,我还在SharpDevelop论坛上发布了一个问题,但没有结果(请参见http://community.sharpdevelop.net/forums/t/8272.aspx信息),但没有结果。 有人使用.Net压缩Zip文件并使用Java.Utils.Zip类将其解压缩的代码示例吗? 问候 我使用了DotNetZip库,它似乎可以正常工作。典型代码:
在使用SharpZipLib(最新版本)创建zip并使用java.utils.zip提取时,我遇到了同样的问题。 这是解决我问题的原因。我不得不强制排除zip64用法:
您不想在.NET中使用ZipPackage类-它不是一个标准的zip模型。很好,但是它假定文件中有特定的结构,带有带有众所周知名称的清单,依此类推。 ZipPackage似乎已针对Office文档和XPS文档进行了优化。 如果您正在处理通用ZIP文件并需要良好的互操作性,那么第三方库(例如http://www.codeplex.com/DotNetZip)可能是更好的选择。 DotNetZip生成的文件几乎可以与所有内容进行互操作,包括Java的java.utils.zip。但是请小心使用Java不支持的功能,例如ZIP64或Unicode。我认为ZIP64仅对非常大的档案有用,而Java目前尚不支持。 Java以特定的方式支持Unicode,因此,如果您使用DotNetZip生成基于Unicode的ZIP文件,则只需遵循一些规则,它将可以正常工作。 无法使用SharpZipLib,但是您可以尝试使用ZipPackage类System.IO.Packaging创建zip文件,而无需使用第3部分库(需要.NET 3)。 在Linux上解压缩SharpZipLib压缩文件时,我遇到了类似的问题。我想我已经解决了它(现在我可以在Linux和Mac上工作,我已经对其进行了测试),请查看我的博客文章:http://igorbrejc.net/development/c/sharpziplib-making-it-work-for-linuxmac <铅> 要判断它是否确实是符合标准的ZIP文件,请参阅PKZIP的.ZIP文件格式规范。 对于我而言,使用SharpZipLib可以在Windows Mobile设备上创建ZIP并使用WinZip或Windows XP的内置压缩文件夹功能打开它们没有问题,也可以使用SharpZipLib在桌面上生成ZIP并进行处理在移动设备上使用我自己的ZIP提取实用程序(基本上是zlib的package器)对它们进行处理。 |