code: public void downloadZipStreamCall(ResponseDownloadResource resource, HttpServletResponse response) {
          try (ZipOutputStream zipOus = new ZipOutputStream(response.getOutputStream(), getZipOutputCharset(resource))) {
              final Map<String, WritternZipStreamWriter> zipWriterMap = createZipWriterMap(resource);
              zipWriterMap.forEach((fileName, writer) -> {
                  try (ByteArrayOutputStream byteOus = new ByteArrayOutputStream()) {
                      writer.write(byteOus);
                      zipOus.putNextEntry(new ZipEntry(fileName));
                      byteOus.writeTo(zipOus);
                  } catch (IOException e) {
                      handleDownloadIOException(resource, fileName, e);
                  } finally {
                      try {
                          zipOus.closeEntry();
                      } catch (IOException e) {
                          handleDownloadIOException(resource, fileName, e);
                      }
                  }
              });
          } catch (IOException e) {
              handleDownloadIOException(resource, e);
          }
      }
docs: ==========