首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GZIPOutputStream的字符串

GZIPOutputStream的字符串
EN

Stack Overflow用户
提问于 2012-06-05 04:23:32
回答 2查看 21.7K关注 0票数 12

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

创建字符串转储字符串到gzipped文件endloop

如果可能的话,我想避免转储到一个纯文本文件,然后压缩它,因为这些文件将几乎每个100兆。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-05 05:15:57

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

代码语言:javascript
复制
    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

票数 23
EN

Stack Overflow用户

发布于 2020-12-08 20:04:17

代码语言:javascript
复制
try {
        String srcString = "the string you want to zip.";

        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        GZIPOutputStream gzip = new GZIPOutputStream(stream);
        gzip.write(srcString.getBytes(StandardCharsets.UTF_8));
        gzip.close();

        // the gzip bytes you get
        byte[] zipBytes = stream.toByteArray();

    } catch (IOException ex) {
        // ...
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10887828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档