Вам необходимо close()
или finish()
поток ZipOutputStream
до вызова baos.toByteArray()
.
Поскольку ByteArrayOutputStream
закрывать не нужно, и / или поскольку вы можете позвонить toByteArray()
даже после его закрытия, я бы порекомендовал вам переместить его за пределы блока try
:
public static byte[] zip(final Map<String, byte[]> mapReports) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (ZipOutputStream zos = new ZipOutputStream(baos)) {
for (Map.Entry<String, byte[]> report : mapReports.entrySet()) {
zos.putNextEntry(new ZipEntry(report.getKey()));
zos.write(report.getValue());
}
} catch (Exception e) {
throw new RuntimeException("Exception zipping files", e);
}
return baos.toByteArray();
}