Convert ZipOutputStream to ByteArrayInputStream
Asked Answered
R

1

10

I want to compress an InputStream using ZipOutputStream and then get the InputStream from compressed ZipOutputStream without saving file on disc. Is that possible?

Rogozen answered 26/11, 2013 at 15:23 Comment(0)
R
33

I figured it out:

public InputStream getCompressed(InputStream is) throws IOException {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    ZipOutputStream zos = new ZipOutputStream(bos);
    zos.putNextEntry(new ZipEntry(""));

    int count;
    byte data[] = new byte[2048];
    BufferedInputStream entryStream = new BufferedInputStream(is, 2048);
    while ((count = entryStream.read(data, 0, 2048)) != -1) {
        zos.write( data, 0, count );
    }
    entryStream.close();

    zos.closeEntry();
    zos.close();

    return new ByteArrayInputStream(bos.toByteArray());
}
Rogozen answered 27/11, 2013 at 9:56 Comment(1)
Came here to see if my code would work and found that I did just the same as youDiscoverer

© 2022 - 2024 — McMap. All rights reserved.