代码之家  ›  专栏  ›  技术社区  ›  massimogentilini

帮助从.NET创建zip文件并从Java中读取它们

  •  4
  • massimogentilini  · 技术社区  · 16 年前

    我试图从.NET中创建一个可以从Java代码中读取的zip文件。

    我使用SalpZiPLIB创建zip文件,但是如果生成的文件是根据zizib库的Cuzzip函数而有效的,并且可以通过Wizip或Wrrar成功地解压缩,当试图用Java中的java. UTILS.zip类解压缩时,总是会出错。

    问题似乎在sharpziplib写的错误标题中,我也在sharpdevelop论坛上发布了一个问题,但没有结果(参见 http://community.sharpdevelop.net/forums/t/8272.aspx 但没有结果。

    有人有没有用.NET压缩一个zip文件并用java.utils.zip类解压它的代码示例?

    当做 马西莫

    6 回复  |  直到 9 年前
        1
  •  8
  •   Cheeso    15 年前

    我已经用过 DotNetZip library 而且似乎工作正常。典型代码:

    using (ZipFile zipFile = new ZipFile())
    {
      zipFile.AddDirectory(sourceFolderPath);
      zipFile.Save(archiveFolderName);
    }
    
        2
  •  3
  •   Andreas Niedermair    9 年前

    我在用sharpziplib(最新版本)创建zips和用java.utils.zip解压时遇到了同样的问题。

    这就是解决我问题的方法。我不得不强制排除使用zip64:

    ZipOutputStream s = new ZipOutputStream(File.Create(someZipFileName))
    
    s.UseZip64 = UseZip64.Off;
    
        3
  •  2
  •   aku    16 年前

    无法帮助使用sharpziplib,但可以尝试使用 ZipPackage System.IO.Packaging 不使用第三部分库(需要.NET 3+)。

        4
  •  2
  •   Cheeso    15 年前

    你不想在.NET中使用ZipPackage类-它不是一个标准的Zip模型。是的,但是它假定文件中有一个特定的结构,带有一个名为的清单,等等。ZipPackage似乎已针对Office文档和XPS文档进行了优化。

    第三方图书馆,比如 http://www.codeplex.com/DotNetZip 如果您正在执行通用zip文件并希望具有良好的互操作性,则可能是更好的选择。

    dotNETZip构建的文件非常接近所有的东西,包括Java的JavaUTLS.ZIP。但是要小心使用Java不支持的特性,比如ZIP64或Unicode。ZIP64只适用于非常大的档案,我认为Java在这个时候不支持。Java以特定的方式支持Unicode,因此,如果用DotNetZip生成基于Unicode的ZIP文件,则只需遵循一些规则,它就可以正常工作。

        5
  •  1
  •   Mike Dimmick    16 年前

    要判断它是否真的是一个一致的zip文件,请参见pkzip .ZIP File Format Specification .

    值得一提的是,我使用SharpZipLib在Windows Mobile设备上创建Zip,并使用WinZip或Windows XP内置的压缩文件夹功能打开它们,并且在桌面上使用SharpZipLib生成Zip,并在Mobil上使用我自己的Zip提取实用程序(基本上是zlib周围的包装器)处理它们也没有问题。电子设备。

        6
  •  1
  •   Igor Brejc    15 年前

    我在Linux上解压sharpziplib压缩文件时遇到了类似的问题。我想我解决了它(我现在在Linux和Mac上工作,我测试了它),查看我的博客: http://igorbrejc.net/development/c/sharpziplib-making-it-work-for-linuxmac