我正在尝试压缩InputStream并返回InputStream:
public InputStream compress (InputStream in){
// Read "in" and write to ZipOutputStream
// Convert ZipOutputStream into InputStream and return
}
我正在压缩一个文件(所以我可以使用GZIP),但将来会做更多(所以我选择了ZIP)。在大多数地方:他们使用不存在的toBytesArray()或getBytes()(!)-ZipOutputStream
我的问题是:
最佳答案
像这样的东西:
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());
}
关于java - 压缩InputStream,返回InputStream(在内存中,没有文件),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17928045/