サイト移転のお知らせ:http://techbooster.org/に移転しました

AndroidでZIPファイルを展開する

3月 13, 2011   //   by kseto   //   アプリケーション  //  No Comments

「AndroidでZIPファイルを作成する」ではAndroidアプリケーションからZIPファイルを作成する方法についてご紹介しました。
今回はAndroidアプリケーションでZIPファイルを展開する方法についてご紹介します。

詳しい説明は続きからどうぞ。

クラスとメソッド

ZIPファイルの展開には下記のクラスとメソッドを利用します。

  • java.util.zip.ZipInputStream : ZIPファイル形式のファイルを展開するための入力ストリーム
  • java.util.zip.ZipEntry : ZIPファイルエントリを表すためのクラス

ZipInputStream

ZipInputStreamはZIP形式で圧縮されているファイルを展開する為の入力ストリームです。
コンストラクタの引数には展開したいファイルの入力ストリームを指定します。

ZipInputStream(InputStream stream) 

たとえば、SDカード上に保存されているSample.zipをZipInputStreamに指定するには以下のようにします。

// Sample.zipをZipInputStreamに指定
ZipInputStream in = new ZipInputStream(new BufferedInputStream(new FileInputStream("/sdcard/Sample.zip")));

エントリの取得

「AndroidでZIPファイルを作成する」でも説明しているようにZIPファイルは圧縮されているファイルをエントリという形式で保持しています。エントリを取得するにはZipInputStreamクラスに定義されているgetNextEntryメソッドを使います。

public ZipEntry getNextEntry() 

戻り値
ZIPファイルに含まれるエントリを返す。エントリの終端に達したらnullを返す。

getNextEntryメソッドを繰り返し呼ぶことでZIPファイルに含まれるすべてのエントリに順にアクセスすることができます。エントリを取得したらreadメソッドでそのエントリのデータを読み取り、出力ファイルとして保存します。

while( (zipEntry = in.getNextEntry()) != null)
{
   // 出力用ファイルストリームの生成
   out = new BufferedOutputStream(new FileOutputStream("/sdcard/" + zipEntry.getName()));

   // エントリの内容を出力
    while((data = in.read()) != -1)
    {
          out.write(data);
    }
}

上記コードでは、SDカード上にZIPファイルから展開したファイルを保存しています。
ファイル名にはzipEntryクラスのgetNameメソッドを使うことで取得したエントリの名前を指定しています。

関連する記事:

Sponsored Link

Comments are closed.

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です