我正在尝试压缩InputStream并返回一个InputStream:
public InputStream compress (InputStream in){
// Read "in" and write to ZipOutputStream
// Convert ZipOutputStream into InputStream and return
}
我正在压缩一个文件(所以我可以使用GZIP),但将来会做更多的事情(所以我选择了ZIP)。在大多数地方:
How can I convert ZipInputStream to InputStream?
他们使用不存在的toBytesArray()或getBytes()(!) - ZipOutputStream
我的问题是:
如果不存在此类方法,如何将ZipOutPutStream转换为InputStream?
创建ZipOutPutStream()时,没有默认构造函数。我应该创建一个新的ZipOutputStrem(new OutputStream())??
答案 0 :(得分:9)
类似的东西:
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());
}
答案 1 :(得分:2)