Gerar Zip de array de bytes

Boa tarde.

Pessoal eu passo um array de bytes para o response gerar um download, eu não tenho um Arquivo fisico que contem esses bytes, pois eu passo um stringBuilder.ToString().getBytes(), e em cima desses bytes e gerado o download assim:

[code]public static synchronized void load(ByteArrayOutputStream array, String content, String fileName) throws IOException {
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
byte[] bytes = array.toByteArray();
response.setContentLength(bytes.length);
response.setContentType(content);
response.setCharacterEncoding(“ISO-8859-1”);
response.setHeader(“Content-disposition”,
“attachment; filename=” + fileName);

	ServletOutputStream output = response.getOutputStream();		
	output.write(bytes);  
	output.flush();  
	output.close();

	FacesContext.getCurrentInstance().responseComplete();
}	[/code]

Minha duvida, e como eu faço pra zipar esse array de bytes na hora de gerar o download de um txt? Pois eu nao tenho o arquivo.

http://docs.oracle.com/javase/6/docs/api/java/util/zip/ZipOutputStream.html

[code] public static byte[] criarZip(Map<String,byte[]> files) throws Exception {

    try {  
    	
    	ByteArrayOutputStream output = new ByteArrayOutputStream();
    	
        ZipOutputStream out = new ZipOutputStream(output);   

        // Ajusta modo de compressão  
        out.setLevel(Deflater.DEFAULT_COMPRESSION);  
  
        Iterator<String> iterator = files.keySet().iterator();
       
        
        while (iterator.hasNext()) {
        	
			String nomeArquivo = (String) iterator.next();
			
			byte[] bytes = files.get(nomeArquivo);
		
          out.putNextEntry(new ZipEntry(nomeArquivo));  

          out.write(bytes);  
           
          out.closeEntry();  
        }

        output.close();
        out.close(); 
        
        return  output.toByteArray();

  
    } catch (IllegalArgumentException iae) {  
  
        throw new Exception(iae);  
  
    } catch (Exception e) {  
  
        throw new Exception(e);  
  
    }
      
   

}[/code]

espero ter ajudado!