如何在.NET中使用java.util.zip.Deflater解压缩放气流?
我在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
由于您无法控制 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.
要解决平台相关的压缩和解压缩问题,请使用
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.
我不相信 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.