java - 字符串到 GZIPOutputStream

标签 java compression gzip gzipoutputstream

我试过搜索但找不到任何东西。我想要做的是循环遍历一个列表,在该列表中我从多个列表中的项目组合构造一个字符串。然后我想将这些字符串转储到 gzip 文件中。我只是将它转储到一个普通的 ascii 文本文件中,但我似乎无法让它与 gzipoutputstream 一起工作。所以基本上,

循环 创建字符串 将字符串转储到压缩文件 结束循环

如果可能的话,我想避免转储到纯文本文件然后对其进行 gzip 压缩,因为这些文件每个将近 100 兆。

最佳答案

是的,你可以做到这一点没有问题。您只需要使用编写器将基于字符的字符串转换为基于字节的 gzip 流。

    BufferedWriter writer = null;
    try {
        GZIPOutputStream zip = new GZIPOutputStream(
            new FileOutputStream(new File("tmp.zip")));

        writer = new BufferedWriter(
            new OutputStreamWriter(zip, "UTF-8"));

        String[] data = new String[] { "this", "is", "some", 
            "data", "in", "a", "list" };

        for (String line : data) {
            writer.append(line);
            writer.newLine();
        }
    } finally {         
        if (writer != null)
            writer.close();
    }

此外,请记住 gzip 只是压缩一个流,如果您想要嵌入文件,请参阅此帖子:gzip archive with multiple files inside

关于java - 字符串到 GZIPOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10887828/

相关文章:

angular - 如何从 AWS Cloudfront 提供压缩的 Angular 2 bundle

c# - 读取压缩文件并写入新文件将不允许解压

java - 在 Java 下创建进程变慢?

java - 设置 JTextArea (Java Swing) 的尺寸(数行)

windows-phone-8 - 在 Windows Phone 8 应用程序中下载并解压缩 zip 文件

algorithm - 非二进制字母表的哈夫曼树?

gzip - gnuplot能否透明打开压缩数据文件以节省存储空间?

python - 未解压缩的 40GB tar.gz 文件中的行数?

java - 01 扭结背包

java - 如何查询具有多对多关系的实体?