2013-08-24 10 views
6

W moim przypadku muszę pobrać obrazy z folderu zasobów w mojej aplikacji internetowej. Teraz używam następującego kodu, aby pobrać obrazy przez URL.Jak tworzyć pliki ZIP za pomocą listy strumieni wejściowych?

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); 
} 

Ale chcę pojedynczą operację, aby przeczytać wszystkie obrazy na raz i utworzyć plik zip dla tego. Nie wiem zbyt wiele o korzystaniu z sekwencyjnych strumieni wejściowych i strumieni wejściowych zip, więc jeśli to możliwe, proszę dać mi znać.

+0

więc pytasz, jak pobrać wszystkie obrazy z // zasobów // WebFiles // images // i skompresować je do jednego pliku zip? Jak imgPath jest przypisany? –

+0

Mam już imgPath.W moim przypadku mam listę ścieżek obrazu, która znajduje się w //resources//WebFiles//images. Muszę pobrać wszystkie te obrazy przez URL na raz. – bajrangi

+1

Nie możesz po prostu ZipOuputStream http://docs.oracle.com/javase/6/docs/api/java/util/zip/ZipOutputStream.html i zrobić coś takiego, jak tutaj: http: //examples.javacodegeeks .com/core-java/util/zip/create-zip-file-from-multiple-files-with-zipoutputstream/przez zapętlenie każdego obrazu? –

Odpowiedz

6

Jedynym sposobem, widzę, że jesteś w stanie to zrobić, to coś jak poniżej:

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(); 
} 

Ref: ZipOutputStream Example

+0

tak, działa. Dziękujemy za odpowiedź. :) – bajrangi

+0

@amitsingh to przyjemność, cieszę się, że mogłem pomóc. –

2

Adres URL powinien zwrócić plik zip. Jeszcze trzeba wziąć jeden po drugim i stworzyć zip za pomocą programu

+0

możesz wyjaśnić to w kilku dodatkowych szczegółach – bajrangi

+0

Możesz utworzyć listę plików. Następnie utwórz plik zip. Przeprowadź pętlę nad listą i napisz każdy plik do tego pliku ZIP. Możesz odwołać się do tego, tworząc plik zip. http://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java –

Powiązane problemy