gpt4 book ai didi

java - 如何使用 ZipOutputStream 压缩单个字符串并保存为可读字符串

转载 作者:行者123 更新时间:2023-11-30 09:24:32 27 4
gpt4 key购买 nike

我尝试用 DeflaterOutputStream 压缩一个字符串并用 base64 转换输出以将结果保存在另一个字符串中

public static String compress(String str) throws IOException {
byte[] data = str.getBytes("UTF-8");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
java.util.zip.Deflater compresser = new java.util.zip.Deflater(java.util.zip.Deflater.BEST_COMPRESSION, true);
DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(stream, cozmpresser);
deflaterOutputStream.write(data);
deflaterOutputStream.close();
byte[] output = stream.toByteArray();
return Base64Coder.encodeLines(output);
}

现在我想试试 ZipOutputStream。我试过了

public static String compress(String str) throws IOException {
byte[] data = str.getBytes("UTF-8");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ZipOutputStream deflaterOutputStream = new ZipOutputStream(stream);
deflaterOutputStream.setMethod(ZipOutputStream.DEFLATED);
deflaterOutputStream.setLevel(8);
deflaterOutputStream.write(data);
deflaterOutputStream.close();
byte[] output = stream.toByteArray();
return Base64Coder.encodeLines(output);
}

但是不工作。 ZipOutputStream 似乎面向文件夹和文件的结构我该怎么办?

最佳答案

ZipOutputStream 旨在产生 Zip file ,如您所见,通常用作文件和文件夹的容器(换句话说,“压缩文件夹”或“压缩目录树”)。

如果您只想压缩一个字符串,然后将其转换为某种可打印的形式,ZipOutputStream 并不是真正正确的选择。在我看来,GZIPOutputStream 更适合这个目的。

由于您使用 android 标记标记了此问题,请注意此处的注释:http://developer.android.com/reference/java/util/zip/GZIPOutputStream.html

使用 GZIPOutputStream 比 ZipOutputStream 更容易一些,因为 GZIP 仅用于压缩,而不是多个文件的容器。

关于java - 如何使用 ZipOutputStream 压缩单个字符串并保存为可读字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15640765/

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