gpt4 book ai didi

Java GZIPOutputStream : Corrupted gzip with this method

转载 作者:行者123 更新时间:2023-12-02 06:30:04 28 4
gpt4 key购买 nike

有人知道为什么创建 gzip 字符串的代码不起作用吗? Mac 上的 CLI gzip 无法打开生成的文件:“不是 gz 格式”。

请注意:我需要字符串,而不是文件。直接创建 gzip 压缩文件是可行的,编写 JSON 而不压缩它也是如此。本例中的文件写入仅用于测试目的。

public someMethod {
String gzippedString = this.gzippedString(finalJSONObject.toJSONString());
OutputStream outputStream = new FileOutputStream(new File(this.jsonOutputPath + "/myfile.gz"));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
writer.append(gzippedString);
writer.close();
}

private String gzippedString(String inputString) throws IOException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(outputStream);
gzipOutputStream.write(inputString.getBytes());
gzipOutputStream.close();
outputStream.close();
String gzippedString = outputStream.toString();
return gzippedString;
}

编辑:chrylis 给我指了路:

public void someMethod() {
byte[] byteArray = this.gzippedByteArray(finalJSONObject.toJSONString());
FileOutputStream out = new FileOutputStream(this.jsonOutputPath + "/myfile.gz");
out.write(byteArray);
out.close();
}


private byte[] gzippedByteArray(String inputString) throws IOException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(outputStream);
gzipOutputStream.write(inputString.getBytes());
gzipOutputStream.close();
outputStream.close();
byte[] gzippedByteArray = outputStream.toByteArray();
return gzippedByteArray;
}

这会产生一个可用的 gzip 压缩 JSON。非常感谢!

最佳答案

您通过 String 来回传输二进制数据,该字符串具有字符编码和其他此类修饰。直接使用byte[]

关于Java GZIPOutputStream : Corrupted gzip with this method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20149758/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com