全然ぐるーびーな感じがしない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();
}
}
}
コメントを残す