2014年7月27日日曜日

Java : Zip から複数ファイルを解凍して保存する

  1. ZipInputStream を作る
  2. ZipInputStream.getNextEntry でエントリー(ファイル)を取得する
  3. ZipInputStream.read で中身を読み込む
  4. 読み込んだ中身を FileOutputStream に書き込む
  5. 2,3,4 の繰り返し
  6. ZipInputStream.close
以下、サンプルコード。Zip 内にディレクトリ構造がある事は想定していない、単純なコードにしています。
Android で外部ストレージ(SDカード)にエクスポートしたデータをアプリのディレクトリに戻すために使用したコードの一部。

try {
    // infilePath で zip ファイルが指定されているとする
    ZipInputStream zipInputStream =
            new ZipInputStream(new FileInputStream(infilePath));
    ZipEntry zipEntry;
    int len;
    byte[] buffer = new byte[1024];

    while((zipEntry = zipInputStream.getNextEntry()) != null){
        // outFolder で出力先のディレクトリが指定されているとする
        FileOutputStream fileOutputStream = new FileOutputStream(outFolder + "/" + zipEntry.getName());
        while ((len = zipInputStream.read(buffer)) > 0) {
            fileOutputStream.write(buffer, 0, len);
        }
        fileOutputStream.close();
    }
    zipInputStream.close();

} catch (Exception e) {
    // エラー処理
}

0 件のコメント:

コメントを投稿