2009年06月30日

【1日1Java】ZIP解凍

// JRE 1.6.0_07
// java.util.zip.ZipFile
// ZipFileクラスを使用してZipファイルの解凍
// 1階層のみ対応
// 圧縮ファイル内にディレクトリがある場合については、
// ZipInputStreamのエントリー(明日書く予定)参照
// tag zip


// ZIPファイル読み込み
ZipFile zipFile = new ZipFile( "test.zip" );

// 入ってるエントリーの数
System.out.println( zipFile.size() );

// 中身を全部舐める
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while(entries.hasMoreElements()) {
    ZipEntry entry = entries.nextElement();
    
    // とりあえず名前を拝見
    System.out.println(entry.getName());
    
    // その場に解凍してみる
    // 同名ファイルがあるとノーモーションで上書きするので注意
    InputStream is = zipFile.getInputStream( entry );
    OutputStream os = new FileOutputStream( entry.getName() );
    int i;
    while( ( i = is.read() ) != -1 ) {
        os.write( i );
    }
    os.close();
    is.close();
}
zipFile.close();