2013-08-24 22 views
6

私の場合は、Webアプリケーションのresourcesフォルダから画像をダウンロードする必要があります。今、私はURLを通して画像をダウンロードするために次のコードを使用しています。入力ストリームのリストを使用してZIPファイルを作成する方法は?

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

しかし、一度にすべての画像を読み込んで、このためのzipファイルを作成したいと思います。 シーケンス入力ストリームとZIP入力ストリームの使用についてはあまりよく分かりませんので、これらを介して可能な場合はお知らせください。

+0

// resources // WebFiles // images //内のすべてのイメージをダウンロードして、それらをzipファイルに圧縮する方法を尋ねていますか? imgPathはどのように割り当てられますか? –

+0

私はすでにimgPathを持っています。私の場合、私は//resources//WebFiles//images.Iにあるimagepathのリストを持っています。これらのイメージを一度にURLを通してダウンロードする必要があります。 – bajrangi

+1

ちょうどZipOuputStream http://docs.oracle.com/javase/6/docs/api/java/util/zip/ZipOutputStream.htmlできませんでしたここで行われているような何かhttp://examples.javacodegeeks .com/core-java/util/zip/create-zip-file-multiple-files-with-zipoutputstream /各画像をループするか? –

答えて

6

を使用してzipファイルを作成する必要があります。

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

参考:ZipOutputStream Example

+0

はい、それはあなたの答えのために働きます。 :) – bajrangi

+0

@amitsingh喜んで、私が助けることができてうれしい。 –

2

URLはzipファイルを返す必要があります。そうでなければあなたは私はあなたがこれを行うことができること見ることができる唯一の方法は、以下のようなものである一つ一つを取ると、あなたのプログラム

+0

詳細をご説明ください – bajrangi

+0

ファイルのリストを作成することができます。次に、zipファイルを作成します。リストをループし、各ファイルをそのzipに書き出します。これを参照すると、zipファイルを作成できます。 http://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java –

関連する問題