2013-08-24 7 views
6

Nel mio caso devo scaricare le immagini dalla cartella delle risorse nella mia app web. In questo momento sto usando il seguente codice per scaricare le immagini tramite URL.Come creare file ZIP usando la lista di flussi di input?

url = new URL(properties.getOesServerURL() + "//resources//WebFiles//images//" + imgPath); 

filename = url.getFile();    

is = url.openStream(); 
os = new FileOutputStream(sClientPhysicalPath + "//resources//WebFiles//images//" + imgPath); 

b = new byte[2048]; 

while ((length = is.read(b)) != -1) { 
    os.write(b, 0, length); 
} 

Ma voglio un'unica operazione per leggere tutte le immagini contemporaneamente e creare un file zip per questo. Non so molto sull'uso dei flussi di input di sequenza e dei flussi di input zip, quindi se è possibile attraverso questi, fatemelo sapere.

+0

quindi stai chiedendo come scaricare tutte le immagini in // risorse // WebFiles // images // e comprimerle in un unico file zip? Come viene assegnato imgPath? –

+0

Ho già imgPath. Nel mio caso ho un elenco di imagepath che si trova in //resources//WebFiles//images.. Devo scaricare tutte queste immagini tramite URL in una sola volta. – bajrangi

+1

Non potresti semplicemente un file ZipOuputStream http://docs.oracle.com/javase/6/docs/api/java/util/zip/ZipOutputStream.html e fare qualcosa di simile a ciò che viene fatto qui http: //examples.javacodegeeks .com/core-java/util/zip/create-zip-file-from-multiple-files-with-zipoutputstream/eseguendo il looping di ciascuna immagine? –

risposta

6

L'unico modo che posso vedere voi di essere in grado di fare questo è qualcosa di simile al seguente:

try { 

    ZipOutputStream zip = new ZipOutputStream(new FileOutputStream("C:/archive.zip")); 

    //GetImgURLs() is however you get your image URLs 

    for(URL imgURL : GetImgURLs()) { 
     is = imgURL.openStream(); 
     zip.putNextEntry(new ZipEntry(imgURL.getFile())); 
     int length; 

     byte[] b = new byte[2048]; 

     while((length = is.read(b)) > 0) { 
      zip.write(b, 0, length); 
     } 
     zip.closeEntry(); 
     is.close(); 
    } 
    zip.close(); 
} 

Rif: ZipOutputStream Example

+0

sì, funziona.Grazie per la risposta. :) – bajrangi

+0

@amitsingh è un piacere, felice di poterti aiutare. –

2

L'URL deve restituire il file zip. Altrimenti si deve prendere uno per uno e creare uno zip utilizzando il programma

+0

potresti spiegarlo in qualche altro dettaglio – bajrangi

+0

Puoi creare un elenco di File. Quindi, crea un file zip. Passa sopra l'elenco e scrivi ogni file in quello zip. È possibile fare riferimento a questo per la creazione di zipfile. http://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java –

Problemi correlati