You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java无法解压Python压缩并Base64编码的字符串问题求助

Java无法解压Python压缩的Base64编码内容

我在Java中尝试解压一段由Python压缩并经Base64编码的字符串,折腾了一整天还是没成功。这段内容在在线工具和Python环境里都能正常解码,我也查过不少Java和Python跨语言压缩解压的相关问题,但依旧没能解决。

初始实现代码

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Base64;
import java.util.zip.DataFormatException;
import java.util.zip.Deflater;
import java.util.zip.Inflater;

public class CompressionUtils {
private static final int BUFFER_SIZE = 1024;

public static byte[] decompress(final byte[] data) {
    final Inflater inflater = new Inflater();
    inflater.setInput(data);
    ByteArrayOutputStream outputStream =
            new ByteArrayOutputStream(data.length);
    byte[] buffer = new byte[data.length];
    try {
        while (!inflater.finished()) {
            final int count = inflater.inflate(buffer);
            outputStream.write(buffer, 0, count);
        }
        outputStream.close();
    } catch (DataFormatException | IOException e) {
        e.printStackTrace();
        log.error("ZlibCompression decompress exception: {}", e.getMessage());
    }
    inflater.end();
    return outputStream.toByteArray();
}

public static void main(String[] args) throws IOException {
    decompress(Base64.getDecoder().decode(Files.readAllBytes(Path.of("zip.txt"))));
}
}

初始代码报错

java.util.zip.DataFormatException: incorrect header check
    at java.base/java.util.zip.Inflater.inflateBytesBytes(Native Method)
    at java.base/java.util.zip.Inflater.inflate(Inflater.java:378)
    at java.base/java.util.zip.Inflater.inflate(Inflater.java:464) 

按建议修改后的代码

public static void main(String[] args) throws IOException {
    
    byte[] decoded = Base64.getDecoder().decode(Files.readAllBytes(Path.of("zip.txt")));
    ByteArrayInputStream in = new ByteArrayInputStream(decoded);
    GZIPInputStream gzStream = new GZIPInputStream(in);
    decompress(gzStream.readAllBytes());
    gzStream.close();
}

修改后仍出现的报错

java.util.zip.DataFormatException: incorrect header check
at java.base/java.util.zip.Inflater.inflateBytesBytes(Native Method)
at java.base/java.util.zip.Inflater.inflate(Inflater.java:378)
at java.base/java.util.zip.Inflater.inflate(Inflater.java:464)
at efrisapi/com.efrisapi.util.CompressionUtils.decompress(CompressionUtils.java:51)
at efrisapi/com.efrisapi.util.CompressionUtils.main(CompressionUtils.java:67)

内容的提问来源于stack exchange,提问作者Aqeel Haider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:36:23