Posted by & filed under 未分類.

全然ぐるーびーな感じがしないwww
実行にはApache Commonsのcompressライブラリが必要。

groovy -cp /path/for/jar/commons-compress.jar Test.groovy <アーカイブファイル>

ファイルは、カレントディレクトリに展開されます。

…などと、以下のような長ったらしいスクリプトを書いていると、
@kiy0taka 氏からこんな素敵なスクリプトを頂きました。
groovy -e “args.each{new AntBuilder().unzip(src:it, dest:’.’, encoding:’Windows-31J’)}” hoge.zip

挫けずに書こう…
—–

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.OutputStream;

import org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.ArchiveInputStream;
import org.apache.commons.compress.archivers.ArchiveStreamFactory;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;

class Test {
public static void main(String[] args) {
args.each {
ArchiveInputStream str = new ZipArchiveInputStream(new FileInputStream(new File(it)), "Windows-31J", false);

for (ArchiveEntry ent = str.getNextEntry(); ent != null; ent = str.getNextEntry()) {
String fullpath = ent.getName();
if (fullpath.lastIndexOf('/') > -1) {
new File(fullpath.substring(0, fullpath.lastIndexOf('/'))).mkdirs();
}
OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(fullpath)));
byte[] buf = new byte[1024];
for (int len = str.read(buf, 0, buf.length); len > -1; len = str.read(buf, 0, buf.length)) {
out.write(buf, 0, len);
}
out.close();
}

str.close();
}
}
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です