Javaと情熱のあいだ

カステラとドーナツと珈琲

RAR書庫を解凍するサンプル

JUnRarというJavaで書かれたライブラリを使用してRAR書庫を解凍するサンプルです。
材料はこちら
JUnRar
Commons Logging


「./test.rar」は適当に準備
サンプルでは一旦ディレクトリを作成してからファイルを出力します。

import java.io.File;
import java.io.FileOutputStream;

import de.innosystec.unrar.Archive;
import de.innosystec.unrar.rarfile.FileHeader;

public class ArchiveExample implements ExampleInterface {

    /**
     *
     * 実行
     * @throws Exception 例外
     */
    public void execute() throws Exception {

        final Archive archive = new Archive(new File("./test.rar"));

        FileOutputStream fos = null;

        for (final FileHeader fh : archive.getFileHeaders()) {

                if (fh.isDirectory()) {
                    System.out.println(fh.getFileNameString());
                    new File("./" + fh.getFileNameString().trim()).mkdirs();
                }
        }

        for (final FileHeader fh : archive.getFileHeaders()) {
            try {
                if (!fh.isDirectory()) {
                    System.out.println(fh.getFileNameString());
                    fos = new FileOutputStream(new File("./" + fh.getFileNameString().trim()));
                    archive.extractFile(fh, fos);
                }
            }
            finally {
               if (fos != null) fos.close();
            }
        }
    }
}