c# 中的 java.util.zip.deflater 等效项

发布于 2024-11-17 12:15:19 字数 95 浏览 4 评论 0 原文

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

问候, 拉法尔

does anyone know how can I achieve java's Deflater.deflate() functionality in .NET so it would be understandable for java's Infalter.inflate() method?

regards,
Rafal

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

烟沫凡尘 2024-11-24 12:15:19

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

Nuget:Install-Package DotNetZip

用于字节数组的用法:

ZlibStream.CompressBuffer(dataBytesArray);

ZlibStream.UncompressBuffer(dataBytesArray);

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

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

我不建议使用 SharpZipLib,因为它是纯 C#,并且通常在处理压缩和解压缩数据时性能很重要。看看 http://www.codeproject.com /Articles/434583/SharpZipLib-or-DotNetZip-您应该使用哪个

ZlibStream class inside DotNetZip package (https://dotnetzip.codeplex.com/) is equivalent to java.util.zip.deflater.

Nuget: Install-Package DotNetZip

usage for byte array:

ZlibStream.CompressBuffer(dataBytesArray);

ZlibStream.UncompressBuffer(dataBytesArray);

it also has String compression and decompression, and the class can be used with streams exactly the same way as .NET DefalteStream. Please note that DeflateStream of DotNetZip is not the same as its Java, ZlibStream is.

Additional Info:
DeflateStream of .NET is not compatible with Deflate in Java. In fact, Java uses Zlib and adds 2-6 bytes header and 4 bytes checksum by default. Cutting off the bytes (suggested by some articles like http://blogs.msdn.com/b/bclteam/archive/2007/05/16/system-io-compression-capabilities-kim-hamilton.aspx) will work, but I don't suggest it as parsing header length may cause bugs.

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

木落 2024-11-24 12:15:19

我使用过 #zipLib。这非常简单。

摘自他们的网站:

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

I have used #zipLib. It is pretty straight forward.

Taken from their site:

#ziplib (SharpZipLib, formerly NZipLib) is a Zip, GZip, Tar and BZip2 library written entirely in C# for the .NET platform. It is implemented as an assembly (installable in the GAC), and thus can easily be incorporated into other projects (in any .NET language). The creator of #ziplib put it this way: "I've ported the zip library over to C# because I needed gzip/zip compression and I didn't want to use libzip.dll or something like this. I want all in pure C#."

遇到 2024-11-24 12:15:19

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

Check System.IO.Compression namespace. It has DeflateStream. DeflateStream uses Deflate algorithm for compression, and so does java.util.zip.deflater. So you can compress with .NET and decompress with Java implementation and vice versa.

丑疤怪 2024-11-24 12:15:19

ZipPackage 类

GZipStream 类

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

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

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

There's

ZipPackage Class

or

GZipStream Class

which might help, but I don't know how easy they are to use or if compatible with java (sorry not a great answer).

There's a nice blog post about zip stuff in: http://blogs.msdn.com/b/bclteam/archive/2010/06/28/working-with-zip-files-in-net.aspx

Or a few open source zip utilities around for c#.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文