MACユーザからのZIPファイルの解凍で文字化け(2)
http://d.hatena.ne.jp/a-san/20090820#p1
そのソースです。
エラー処理はいい加減です。
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; public class AsanUnzip { void unzip(File zipfile, File outdir) throws ZipException, IOException { if (! outdir.exists()) { outdir.mkdirs(); } ZipFile zip = new ZipFile(zipfile); for (Enumeration e=zip.entries(); e.hasMoreElements(); ) { ZipEntry entry = (ZipEntry) e.nextElement(); System.out.println(entry.getName()); File outfile = new File(outdir, entry.getName()); if (entry.isDirectory()) { outfile.mkdirs(); continue; } if (! outfile.getParentFile().exists()) { outfile.getParentFile().mkdirs(); } BufferedInputStream in = new BufferedInputStream(zip.getInputStream(entry)); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outfile)); while (in.available() > 0) { byte[] bytes = new byte[4096]; int len = in.read(bytes); out.write(bytes, 0, len); } in.close(); out.close(); } } public static void main(String[] args) throws ZipException, IOException { if (args.length != 2) { System.err.println("usage: AsanUnzip <zipfile> <outdir>"); System.exit(-1); } File zipfile = new File(args[0]); File outdir = new File(args[1]); new AsanUnzip().unzip(zipfile, outdir); } }