パスワード付きZipファイルをJava(Zip4j)で

パスワード付きのZipファイルをJavaで処理する必要性が出てきました。
普段は java.util.zip.ZipInputStream を使って↓のように実装しますが、

FileInputStream fis = new FileInputStream(ファイル名);
ZipInputStream zis = new ZipInputStream(fis);
InputStreamReader in = new InputStreamReader(zis, “UTF-8”);

パスワード付きのzipは食えないじゃんて事で。
 
ググってたらStackOverFlowの↓に行き着いて
How to use zip4j to extract an zip file with password protection
↓こんなドンピシャな返答が。。

Try the following and make sure you are using the most recent Zip4j library (1.3.1):

String source = "folder/source.zip";
String destination = "folder/source/";
String password = "password";
 
try {
 ZipFile zipFile = new ZipFile(source);
 if (zipFile.isEncrypted()) {
  zipFile.setPassword(password);
 }
 zipFile.extractAll(destination);
} catch (ZipException e) {
 e.printStackTrace();
}

 
ということで、Zip4jのウェブサイトからjarをダウンロードします。
http://www.lingala.net/zip4j/download.php
 
hogeっていうディレクトリに2つテキストファイル作って、

Lhaplusっていうソフトウエアでパスワード付きのzipにします。

ダウンロードしたzip4j_1.3.1.jarにクラスパス通して、ZipFileというクラスをインポートして
上記のStackOverFlowに載ってた例をまんまで叩いてみると、、、

import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;

public class unzipper {
 public static void main(String args[]) {
  String source = "hoge.zip";
  String destination = "dest/";
  String password = "hoge";
  try {
      ZipFile zipFile = new ZipFile(source);
      if (zipFile.isEncrypted()) {
          zipFile.setPassword(password);
      }
      zipFile.extractAll(destination);
  } catch (ZipException e) {
      e.printStackTrace();
  }
 }
}

狙った通りに解凍されてて、
 
中身もOKでした。

 
って事でZip4j便利ですね~。
 

わかりやすいJava入門編
わかりやすいJava入門編

posted with amazlet at 12.11.18
川場 隆
秀和システム
売り上げランキング: 1715

コメント

タイトルとURLをコピーしました