2013-08-24 40 views
6

Trong trường hợp của tôi, tôi phải tải xuống hình ảnh từ thư mục tài nguyên trong ứng dụng web của mình. Ngay bây giờ tôi đang sử dụng đoạn mã sau để tải hình ảnh qua URL.Cách tạo tệp ZIP bằng danh sách Luồng đầu vào?

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

Nhưng tôi muốn một thao tác duy nhất để đọc tất cả hình ảnh cùng một lúc và tạo tệp zip cho điều này. Tôi không biết nhiều về việc sử dụng luồng đầu vào chuỗi và luồng đầu vào zip vì vậy nếu có thể thông qua các luồng này, vui lòng cho tôi biết.

+0

Vậy bạn có hỏi cách tải xuống tất cả hình ảnh trong // resources // WebFiles // images // và nén chúng vào một tệp zip không? ImgPath được gán như thế nào? –

+0

Tôi đã có imgPath.Trong trường hợp của tôi tôi có danh sách các đường dẫn hình ảnh được đặt tại //resources//WebFiles//images.I phải tải xuống tất cả các hình ảnh này thông qua URL cùng một lúc. – bajrangi

+1

Bạn không thể chỉ là một ZipOuputStream http://docs.oracle.com/javase/6/docs/api/java/util/zip/ZipOutputStream.html và làm điều gì đó giống như những gì được thực hiện ở đây http: //examples.javacodegeeks .com/core-java/util/zip/create-zip-file-từ-nhiều-tệp-với-zipoutputstream/bằng cách lặp qua từng hình ảnh? –

Trả lời

6

Cách duy nhất tôi có thể thấy bạn có khả năng để làm điều này là một cái gì đó như sau:

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

có, Nó hoạt động. Cảm ơn câu trả lời của bạn. :) – bajrangi

+0

@amitsingh đó là một niềm vui, vui vì tôi có thể giúp đỡ. –

2

Url phải trả về tệp nén. Nếu không bạn phải đưa từng người một và tạo ra một zip sử dụng chương trình của bạn

+0

bạn có thể giải thích nó trong một số chi tiết khác không? – bajrangi

+0

Bạn có thể tạo danh sách Tệp. Sau đó, tạo một tệp zip. Lặp qua danh sách và ghi từng tệp vào zip đó. Bạn có thể tham khảo điều này để tạo tệp nén. http://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java –

Các vấn đề liên quan