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

标签 java android

我尝试使用 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/

相关文章:

java - 为什么我的 JPanel 上的滑动效果有时会滞后?

java - 抽屉导航监听器不在 fragment 中工作

android - 从 Microsoft 应用程序注册门户获取的客户端 ID 的安全问题

android - TelephonyManager.getDeviceId(0) 返回不同的结果

android - 递归搜索文件

java - 有什么方法可以获取自定义对象中的所有数据类型吗?

java - Android SwipeViews + TitleStrip + ListView

java - 如何使用itext中签名的pdf上的注释添加用户定义的外观图标?或者这可能吗?

android - 如何更改语言环境?不适用于某些设备

android - 调整 Android 设备的色彩空间