帮助从.Net创建Zip文件并从Java读取文件

帮助从.Net创建Zip文件并从Java读取文件

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库,它似乎可以正常工作。典型代码:

1
2
3
4
5
using (ZipFile zipFile = new ZipFile())
{
  zipFile.AddDirectory(sourceFolderPath);
  zipFile.Save(archiveFolderName);
}

在使用SharpZipLib(最新版本)创建zip并使用java.utils.zip提取时,我遇到了同样的问题。

这是解决我问题的原因。我不得不强制排除zip64用法:

1
2
3
ZipOutputStream s = new ZipOutputStream(File.Create(someZipFileName))

s.UseZip64 = UseZip64.Off;


您不想在.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器)对它们进行处理。


推荐阅读

    excel怎么用乘法函数

    excel怎么用乘法函数,乘法,函数,哪个,excel乘法函数怎么用?1、首先用鼠标选中要计算的单元格。2、然后选中单元格后点击左上方工具栏的fx公

    鼠标不能拖动文件了

    鼠标不能拖动文件了,鼠标,拖动,本文目录鼠标不能拖动文件了电脑鼠标无法拖动软件图标了,怎么办鼠标不能滚动怎么调整电脑鼠标不能进行任何

    无法读取U盘中的数据

    无法读取U盘中的数据,,核心提示:我有一个512MB的U盘,把它插在电脑显示器里面是空的,但右键单击以查看已经使用USB 480mb文件的属性未设置为隐

    excel中乘法函数是什么?

    excel中乘法函数是什么?,乘法,函数,什么,打开表格,在C1单元格中输入“=A1*B1”乘法公式。以此类推到多个单元。1、A1*B1=C1的Excel乘法公式

    标准差excel用什么函数?

    标准差excel用什么函数?,函数,标准,什么,在数据单元格的下方输入l标准差公式函数公式“=STDEVPA(C2:C6)”。按下回车,求出标准公差值。详细