private static ZipEntryGroup.Entry addUnchangedEntry(final ZipFile zip,
                                                         final ProxyZipWriter zipWriter,
                                                         final ZipEntryGroup.Entry entry,
                                                         final String baseNameOut,
                                                         final StroomZipFileType stroomZipFileType)
            throws IOException {

        if (entry != null) {
            final ZipArchiveEntry zipEntry = zip.getEntry(entry.getName());
            // We are just writing an entry from one zip to another, so we can just
            // work with the raw (i.e. compressed) stream, which saves us from having to
            // de-compress/compress it
            final InputStream inputStream = zip.getRawInputStream(zipEntry);
            final String outEntryName = baseNameOut + stroomZipFileType.getDotExtension();
            zipWriter.writeRawStream(zipEntry, outEntryName, inputStream);
            return new Entry(outEntryName, entry.getUncompressedSize());
        }
        return null;
    }
Pkg private to ease testing. splitDirConsumer also there to aid testing.
stroom-proxy/stroom-proxy-app/src/main/java/stroom/proxy/app/handler/ZipSplitter.java