3

有谁知道如何在 .NET 中实现 java 的 Deflater.deflate() 功能,以便 java 的 Infalter.inflate() 方法可以理解?

问候, 拉法尔

4

4 回答 4

3

我用过#zipLib。这很简单。

取自他们的网站:

#ziplib(SharpZipLib,以前称为 NZipLib)是一个完全用 C# 为 .NET 平台编写的 Zip、GZip、Tar 和 BZip2 库。它被实现为一个程序集(可安装在 GAC 中),因此可以轻松地合并到其他项目中(使用任何 .NET 语言)。#ziplib 的创建者是这样说的:“我已经将 zip 库移植到 C#,因为我需要 gzip/zip 压缩并且我不想使用 libzip.dll 或类似的东西。我希望全部使用纯 C# 。”

于 2011-06-29T15:13:06.237 回答
3

DotNetZip 包 ( https://dotnetzip.codeplex.com/ ) 中的 ZlibStream 类等价于 java.util.zip.deflater。

Nuget:安装包 DotNetZip

字节数组的用法:

ZlibStream.CompressBuffer(dataBytesArray);

ZlibStream.UncompressBuffer(dataBytesArray);

它还具有字符串压缩和解压缩,并且该类可以与流一起使用,其方式与 .NET DefalteStream 完全相同。请注意 DotNetZip 的 DeflateStream 和它的 Java 不同,ZlibStream 是。

附加信息:.NET 的 DeflateStream 与 Java 中的 Deflate 不兼容。事实上,Java 使用 Zlib 并且默认添加了 2-6 字节的 header 和 4 字节的校验和。切断字节(一些文章建议,如http://blogs.msdn.com/b/bclteam/archive/2007/05/16/system-io-compression-capabilities-kim-hamilton.aspx)会起作用,但是我不建议这样做,因为解析标头长度可能会导致错误。

I don't suggest SharpZipLib as it is pure C# and usually performance is important working with compression and decompression data. Look at http://www.codeproject.com/Articles/434583/SharpZipLib-or-DotNetZip-Which-should-you-use

于 2015-09-08T18:31:39.670 回答
2

检查System.IO.Compression命名空间。它有DeflateStream。DeflateStream 使用 Deflate 算法进行压缩,java.util.zip.deflater 也是如此。因此,您可以使用 .NET 进行压缩并使用 Java 实现进行解压缩,反之亦然。

于 2011-06-30T02:26:48.767 回答
0

ZipPackage 类

或者

GZipStream 类

这可能会有所帮助,但我不知道它们使用起来有多容易,或者是否与 java 兼容(抱歉不是一个好答案)。

有一篇关于 zip 内容的不错的博客文章:http: //blogs.msdn.com/b/bclteam/archive/2010/06/28/working-with-zip-files-in-net.aspx

或者一些用于 c# 的开源 zip 实用程序。

于 2011-06-29T15:06:41.917 回答