首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >压缩InputStream,返回InputStream (内存中,没有文件)

压缩InputStream,返回InputStream (内存中,没有文件)
EN

Stack Overflow用户
提问于 2013-07-29 15:29:10
回答 2查看 13.7K关注 0票数 10

我试图压缩一个InputStream并返回一个InputStream:

代码语言:javascript
复制
public InputStream compress (InputStream in){
  // Read "in" and write to ZipOutputStream
  // Convert ZipOutputStream into InputStream and return
}

我正在压缩一个文件(所以我可以使用GZIP),但将来会做得更多(所以我选择了ZIP)。在大多数地方:

我的问题是:

  1. 如果不存在这样的方法,如何将ZipOutPutStream转换为InputStream?
  2. 在创建ZipOutPutStream()时,没有默认的构造函数。我应该创建一个新的ZipOutputStrem(新的OutputStream() )吗?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-30 12:32:42

  1. 用一个有一个ByteArrayOutputStream ()的.toByteArray解决它
  2. 在这里相同,传递上述元素
票数 2
EN

Stack Overflow用户

发布于 2013-08-08 11:07:44

就像这样:

代码语言:javascript
复制
private InputStream compress(InputStream in, String entryName) throws IOException {
        final int BUFFER = 2048;
        byte buffer[] = new byte[BUFFER];
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ZipOutputStream zos = new ZipOutputStream(out);
        zos.putNextEntry(new ZipEntry(entryName));
        int length;
        while ((length = in.read(buffer)) >= 0) {
            zos.write(buffer, 0, length);
        }
        zos.closeEntry();
        zos.close();
        return new ByteArrayInputStream(out.toByteArray());
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17928045

复制
相关文章

相似问题

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