title: Zip Outputstream is closed. java.io.IOException: Stream closed
body: <p>How do I fix this exception? I need to add multiple xlsx to the zip. The first xlsx is added to the list, but the second one throws this error:</p>
  
  <pre><code>public void downloadData() throws Exception {
  
      FacesContext fc = FacesContext.getCurrentInstance();
      setSourceList(new ArrayList&lt;String&gt;());
      setTargetList(new ArrayList&lt;String&gt;());
  
      List&lt;String&gt; tempList = dualList.getTarget();
      System.out.println(tempList.size());
  
      if (tempList != null &amp;&amp; tempList.size() &gt; 0) {
  
          ExternalContext ec = fc.getExternalContext();
          ec.responseReset();
  
          ec.setResponseContentType("application/zip");
          ec.setResponseHeader("Content-Disposition", "attachment; filename=\"Export.zip\"");
          ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
          ZipOutputStream zip = new ZipOutputStream(outByteStream);
          OutputStream outStream = ec.getResponseOutputStream();
  
          for (int i = 0; i &lt; tempList.size(); i++) {
  
              outByteStream = new ByteArrayOutputStream();
              //zip = new ZipOutputStream(outByteStream);
              // outStream = ec.getResponseOutputStream();
  
              int id = ownerNameIdMap.get(tempList.get(i));
              String oName = tempList.get(i);
              String fileName = oName + ".xlsx";
  
              if (petList != null &amp;&amp; petList.size() &gt; 0) {
                  petList.clear();
              }
  
              workBook = new XSSFWorkbook();
  
              OwnerModel ownerModel = ownerMap.get(id);
              ownerFirstName = ownerModel.getFirstName();
              ownerLastName = ownerModel.getLastName();
              workSheet = workBook.createSheet(ownerLastName + ", " + ownerFirstName);
              petList = iOwnerRepository.getActivePetsOfOwner(ownerModel.getId());
              petCount = petList.size();
              createMasterSheet();
              renderSheet(ownerModel);
  
              workBook.write(outByteStream);
              //addEntry(zip, fileName, outByteStream);
              ZipEntry entry = new ZipEntry(fileName);
              zip.putNextEntry(entry);
              System.out.println(fileName);
              zip.write(outByteStream.toByteArray());
              zip.closeEntry();
              workBook.write(zip);
              outStream.write(outByteStream.toByteArray());
  
  
          }
  
          outStream.flush();
          outStream.close();
          zip.close();
          fc.responseComplete();
  
      }
  
  }
  </code></pre>
  
  <p>My stacktrace </p>
  
  <pre><code>SEVERE: Received 'java.io.IOException' when invoking action listener '#{exportViewBean.downloadData}' for component 'j_idt83'
  May 03, 2017 11:24:13 AM javax.faces.event.MethodExpressionActionListener processAction
  SEVERE: java.io.IOException: Stream closed
      at java.util.zip.ZipOutputStream.ensureOpen(ZipOutputStream.java:97)
      at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:190)
      at com.fetchinglife.modules.dataimport.views.ExportViewBean.downloadData(ExportViewBean.java:218)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at com.sun.el.parser.AstValue.invoke(AstValue.java:234)
      at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
      at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:153)
      at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
      at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:771)
      at javax.faces.component.UICommand.broadcast(UICommand.java:300)
      at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:786)
      at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1251)
      at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:105)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
  </code></pre>