Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.util.zip.ZipException:超额订阅的动态位长度树_Java_Gzip - Fatal编程技术网

java.util.zip.ZipException:超额订阅的动态位长度树

java.util.zip.ZipException:超额订阅的动态位长度树,java,gzip,Java,Gzip,我使用gzip压缩字符串,然后解压缩结果,但是我得到了以下异常,为什么 output: Exception in thread "main" java.util.zip.ZipException: oversubscribed dynamic bit lengths tree at java.util.zip.InflaterInputStream.read(Unknown Source) at java.util.zip.GZIPInputStream.read(Unknown Sourc

我使用gzip压缩字符串,然后解压缩结果,但是我得到了以下异常,为什么

output: Exception in thread "main" java.util.zip.ZipException: oversubscribed dynamic bit lengths tree at java.util.zip.InflaterInputStream.read(Unknown Source) at java.util.zip.GZIPInputStream.read(Unknown Source) at Test.main(Test.java:25) 根据,一个可能的原因是您试图读取的ZIP文件已损坏。(我知道这与您的情况不完全相符……但我确信例外信息是指示性的。)

在您的例子中,问题是您正在将gzip流从字节数组转换为字符串,然后再转换回字节数组。这几乎肯定是有损操作,导致GZIP流损坏

如果您想将任意字节数组转换为字符串形式并返回,则需要使用为此目的而设计的字符串编码格式之一;e、 g.base64

或者,只需更改以下内容:

    String out = outstream.toString();
    ByteArrayInputStream in = new ByteArrayInputStream(out.getBytes());
为此:

    byte[] out = outstream.toByteArray();
    ByteArrayInputStream in = new ByteArrayInputStream(out);
根据,一个可能的原因是您试图读取的ZIP文件已损坏。(我知道这与您的情况不完全相符……但我确信例外信息是指示性的。)

在您的例子中,问题是您正在将gzip流从字节数组转换为字符串,然后再转换回字节数组。这几乎肯定是有损操作,导致GZIP流损坏

如果您想将任意字节数组转换为字符串形式并返回,则需要使用为此目的而设计的字符串编码格式之一;e、 g.base64

或者,只需更改以下内容:

    String out = outstream.toString();
    ByteArrayInputStream in = new ByteArrayInputStream(out.getBytes());
为此:

    byte[] out = outstream.toByteArray();
    ByteArrayInputStream in = new ByteArrayInputStream(out);