有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

vb。net在java中解压缩visual basic中压缩的字符串

我在尝试使用DeflateStream解压(在Java中)在Visual Basic中压缩的字符串时遇到问题。我做了一些研究,看到并尝试了许多使用Inflater和InflaterOutputStream在Java中解压缩的代码。没有找到成功的代码。我浏览了很多网站,在谷歌上搜索了很多方法。我可以说,谷歌关于java、inflater/deflater压缩、visual basic、deflaterStream的前3页已经被阅读,但没有成功。我想知道这件事是否可行(应该是因为我找到了一种在Java和C之间进行压缩/解压缩的方法:http://www.dreamincode.net/forums/topic/243808-compression-and-decompression-between-java-and-c%23/) 我还想知道关于VisualBasic DeflateStream和Java模拟类Inflater/Deflater是否存在兼容性问题。如果有人有类似的问题,我也会非常感谢一些代码片段

谢谢, 米海


共 (3) 个答案

  1. # 1 楼答案

    好的,我终于解决了这个问题。这是一个初学者的错误,但我花了足够长的时间来解决它。问题的表现是,当我读取初始文件(经过压缩和加密)时,我将文件内容作为字符串保存在内存中,而不是直接读取字节数组中的内容。当然,有些字节不受字符串编码的支持,它们丢失了,这就是压缩格式无法识别的原因。Java中的充气器/放气器类与vb中的DeflateStream类兼容。网

    非常感谢您的帮助和帮助

  2. # 2 楼答案

    据我所知,java的deflate/inflate使用Zlib。VB用什么来充气?我用谷歌搜索这个失败了,但一些参考资料似乎表明它使用了ZIP,而不是zlib

    您是否尝试运行file compressed_file来确定它的压缩格式

    在任何情况下,您都可能希望尝试使用ZIP算法对apachecommons进行解压缩

  3. # 3 楼答案

    尝试在充气机类中设置nowrap参数

    根据documentation,将。净DeflateStream生成原始deflate格式RFC 1951。我想这就是您使用的Visual Basic

    同样根据documentation,Java的充气器类解码zlib格式RFC1950。zlib格式是原始的deflate格式,用zlib头和尾部包装。通常情况下,根据来自的原始放气数据,充气机类别将失败。NET的DeflateStream。然而幸运的是,充气器类向构造函数提供了nowrap parameter(将被设置为true),这允许充气器在不使用zlib包装器的情况下解码原始放气数据

    所以这应该行得通。DeflateStream生成的数据的前20个十六进制字节是什么