2016-07-24 14 views
3

Ich habe diese topic gefolgt und es funktioniert perfekt. Hier ist die Funktion zum Erstellen Ressource für Datei-DownloaderWie Benutzer ZIP-Datei mit Vaadin-Datei herunterladen Downloader

private StreamResource createResource() { 
    return new StreamResource(new StreamSource() { 
     @Override 
     public InputStream getStream() { 
      String text = "My image"; 

      BufferedImage bi = new BufferedImage(100, 30, BufferedImage.TYPE_3BYTE_BGR); 
      bi.getGraphics().drawChars(text.toCharArray(), 0, text.length(), 10, 20); 

      try { 
       ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
       ImageIO.write(bi, "png", bos); 
       return new ByteArrayInputStream(bos.toByteArray()); 
      } catch (IOException e) { 
       e.printStackTrace(); 
       return null; 
      } 

     } 
    }, "myImage.png"); 
} 

aber ich weiß nicht, wie man es eine Ressource von Zip-Datei zu erstellen. Muss ich viele Ressourcen erstellen? Danke

+0

heraus Wenn Sie eine ZIP-Datei machen möchten, [diese] (http://www.oracle.com/technetwork/articles/java/ compress-1565076.html) Tutorial im Abschnitt "Komprimieren und Archivieren von Daten in einer ZIP-Datei". –

+0

Wenn Sie eine Lösung gefunden haben, teilen Sie sie bitte als Antwort mit. –

+0

Wer ist * "sie" *? – specializt

Antwort

0

Hier ist die Lösung, die ich mich

private StreamResource createZipResource() 
{ 
    return new StreamResource(new StreamSource() 
    { 
     @Override 
     public InputStream getStream() 
     { 
      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 

      try 
      { 
       ZipOutputStream out = new ZipOutputStream(byteArrayOutputStream); 

       for (int i = 0; i < listData.size(); i++) 
       { 
        if (listData.get(i).contains(".txt")) 
        { 
         out.putNextEntry(new ZipEntry(listData.get(i) + ".txt")); 
        } 
        else 
        { 
         out.write(listData.get(i).getBytes());        
        } 
       } 
       out.close(); 
       return new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); 
      } 
      catch (IOException e) 
      { 
       System.out.println("Problem writing ZIP file: " + e); 
      } 
      return null; 
     } 
    },"Filename.zip"); 
}