I am trying to do compress an InputStream and return an InputStream:
public InputStream compress (InputStream in){
// Read "in" and write to ZipOutputStream
// Convert ZipOutputStream into InputStream and return
}
I am compressing one file (so I could use GZIP) but will do more in future (so I opted for ZIP). In most of the places:
Compress an InputStream with gzip
How can I convert ZipInputStream to InputStream?
They use toBytesArray() or getBytes() which do not exist (!) - ZipOutputStream
My problems are:
How do I convert the ZipOutPutStream into InputStream if such methods don't exist?
When creating the ZipOutPutStream() there is no default constructor. Should I create a new ZipOutputStrem(new OutputStream() ) ??
Something like that:
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());
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With