2014年7月27日日曜日

Java : 複数ファイルを Zip に圧縮して保存する

  1. ZipOutputStream を作る
  2. zip に入れるファイル毎に ZipOutputStream.putNextEntry で ZipEntry を追加する
  3. ZipOutputStream.write を書き込む
  4. 2, 3 の繰り返し
  5. ZipOutputStream.close
Android でアプリのデータを外部ストレージ(SDカード等)にまとめてエクスポートするために使いました。 以下サンプルコード。
try {
    // String outfilePath で出力先のファイルパスが指定されているとする
    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outfilePath));
    byte[] buffer = new byte[1024];
    int len;

    // 引数などで String[] files として zip に追加したいファイルのファイルパスが指定されているとする
    for(String file : files) {
        InputStream in = new FileInputStream(file);
        out.putNextEntry(new ZipEntry(file.getName())); // path名からファイル名だけにしておく
        while ((len = in.read(buffer)) > 0) {
            out.write(buffer, 0, len);
        }
        in.close();
        
    }
    out.close();

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

0 件のコメント:

コメントを投稿