In Java does it matter whether I instantiate a ZipOutputStream first, or the BufferedOutputStream first? Example:
FileOutputStream dest = new FileOutputStream(file);
ZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(dest));
// use zip output stream to write to
Or:
FileOutputStream dest = new FileOutputStream(file);
BufferedOutputStream out = new BufferedOutputStream(new ZipOutputStream(dest));
// use buffered stream to write to
In my non-scientific timings I can't seem to tell much of a difference here. I can't see anything in the Java API that says if one of these ways is necessary or preferred. Any advice? It seems like compressing the output first and then buffering it for writes would be more efficient.
GZipOutputStream
has an internal buffer, so it doesn't write individual bytes out to the underlying stream. Depending on the underlying stream type (eg, file vs socket) and the relative sizes of the buffers, you may or may not see any difference. – Mesomorphic