如何在.NET中使用java.util.zip.Deflater解压缩放气流?

发布于 2024-12-21 00:19:50 字数 640 浏览 2 评论 0原文

我在 java.util.zip.Deflater 之后有一个转储(可以确认它是有效的,因为 Java 的 Inflater 打开它很好)并且需要在 .NET 中打开它:

byte[] content = ReadSample(sampleName);
var input = new MemoryStream(content);
var output = new MemoryStream();

using (var z = new System.IO.Compression.DeflateStream(input, CompressionMode.Decompress, true))
        z.CopyTo(output);

这会抛出

System.IO.InvalidDataException:块长度与其不匹配 补充。

尝试过 Ionic.Zlib.DeflateStream - 类似的异常。我怎样才能做到这一点?

转储以 97 86 E8 92 47 3D 40 EA 开头(如果重要的话)。

更新:不幸的是,由于系统正在生产中,我无法控制 Java 方。

I have a dump after java.util.zip.Deflater (can confirm it's valid because Java's Inflater opens it fine) and need to open it in .NET:

byte[] content = ReadSample(sampleName);
var input = new MemoryStream(content);
var output = new MemoryStream();

using (var z = new System.IO.Compression.DeflateStream(input, CompressionMode.Decompress, true))
        z.CopyTo(output);

This throws

System.IO.InvalidDataException : Block length does not match with its
complement.

Tried Ionic.Zlib.DeflateStream - similar exception. How can i do that?

The dump starts with 97 86 E8 92 47 3D 40 EA (if that matters).

Update: Unfortunately, i have no control over Java party as the system is in production.

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

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

发布评论

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

评论(3

<逆流佳人身旁 2024-12-28 00:19:50

由于您无法控制 Java 输出,因此如何在 .NET 应用程序中集成一些 J# 以便直接使用 java.util.zip.Inflater?请参阅这篇 MSDN 文章

这个类似的问题也可能会有帮助,特别是#zipLib

Since you have no control over the Java output, how about integrating some J# in your .NET app in order to use java.util.zip.Inflater directly? See this MSDN article.

This similar question might also be helpful, particularly the suggestion of #zipLib.

明媚如初 2024-12-28 00:19:50

要解决平台相关的压缩和解压缩问题,请使用

Approach-1

在 .NET 中,您可以使用 System.IO.Compression.GZipStream

在 Java 中使用 java.util.zip.GZIPOutPutStream

Approach-2

也可以使用7-zip。有一个适用于 C# 和 Java 的 SDK。

To resolve platform dependent copression and decompression use

Approach-1

In .NET you can use System.IO.Compression.GZipStream

In Java use java.util.zip.GZIPOutPutStream

Approach-2

You can also use 7-zip. There is an SDK for both c# and Java.

旧情勿念 2024-12-28 00:19:50

我不相信 Deflater 和 Inflater 是标准格式,如果 Java 和 C# 中的格式相同,我会感到惊讶。

我建议您使用标准格式,例如 GZIP,它在各个平台上应该是相同的。

I don't believe Deflater and Inflater are standard formats and I would be surprised if it were the same in Java and C#.

I would suggest you use a standard format such as GZIP which should be the same across platforms.

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