帮助从.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器)对它们进行处理。


推荐阅读

    linux复制命令文件?

    linux复制命令文件?,系统,文件,命令,目录,基本知识,源文件,目标,文件夹,路

    linux下文件均分命令?

    linux下文件均分命令?,管理,情况,系统,工作,信息,地址,命令,目录,单位,设备,L

    linux查文件数量命令?

    linux查文件数量命令?,系统,数据,电脑,命令,文件,信息,代码,对比,软件,第三,l

    改文件名linux命令?

    改文件名linux命令?,名字,软件,文件,命令,位置,系统,文件名,目录,指令,方面,l

    linux拼接文件命令?

    linux拼接文件命令?,文件,数据,命令,代码,时间,信息,系统,情况,管理,标准,Lin

    linux文件常用命令?

    linux文件常用命令?,工作,地址,信息,系统,命令,目录,标准,情况,管理,常用命

    文件写入linux命令?

    文件写入linux命令?,文件,命令,状态,系统,名称,时间,首次,数据,数字,内容,在l

    linux命令写满文件?

    linux命令写满文件?,地址,工作,命令,系统,管理,文件,目录,标准,电脑,信息,Lin

    文件夹排序linux命令?

    文件夹排序linux命令?,系统,数字,信息,工作,时间,命令,管理,设备,单位,工具,

    linux命令和库函数?

    linux命令和库函数?,系统,标准,管理,地址,服务,库函数,环境,平台,第一,状态,1

    linux打开文件夹命令?

    linux打开文件夹命令?,工作,系统,信息,命令,图片,文件,管理,发行,名字,名称,

    linux上清空文件命令?

    linux上清空文件命令?,系统,命令,文件夹,名字,档案,文件,目录,方法,终端,指

    linux读取命令行参数?

    linux读取命令行参数?,系统,信息,数据,名称,软件,位置,标准,灵活,百度,资料,L

    linux中历史命令文件?

    linux中历史命令文件?,系统,地址,信息,数字,时间,命令,数据,环境,历史,文件,l

    linux命令拷贝文件?

    linux命令拷贝文件?,系统,文件,命令,目录,情况,源文件,目标,文件夹,选项,语

    linux比对文件命令?

    linux比对文件命令?,系统,对比,第一,管理,工作,命令,文件,网络,名称,标准,lin

    linux命令被替换文件?

    linux命令被替换文件?,系统,文件,命令,批量,工具,电脑,工作,保险,实时,字符

    压缩文件夹命令linux?

    压缩文件夹命令linux?,系统,软件,命令,工具,电脑,文件,文件名,格式,选项,目

    linux配置文件夹命令?

    linux配置文件夹命令?,地址,系统,工作,信息,命令,标准,服务,名称,位置,文件,l

    linux的新建文件命令?

    linux的新建文件命令?,文件,命令,电脑,系统,位置,地址,代码,密码,名字,时间,