ディレクトリをzipにするやつ
ディレクトリをzipにするやつ
package jp.ac.keio.sfc.ht.boro.boromodelgenerator; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class Zipper { private ZipOutputStream zos; private File zipFile; /** * directoryをZIPで圧縮してzipFileというzipを作成する * @param directory * @param zipFile */ public void zipDirectory(File directory, File zipFile) { this.zipFile = zipFile; try { zos = new ZipOutputStream(new FileOutputStream(zipFile)); encode(zos, directory); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // ZipOutputStreamを閉じる try { zos.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 再帰的にZipでencFileを圧縮していく * @param zos * @param encFile * @throws IOException */ private void encode(ZipOutputStream zos, File encFile) throws IOException { for(File file : encFile.listFiles()) { if(file.isDirectory()) { // ディレクトリならば中の階層に移って実行する encode(zos, file); } else if(file.getPath().equals(zipFile.getPath())) { // 作成するzipファイルは無視する } else { // ファイルならば圧縮して書き込む zos.putNextEntry(new ZipEntry(file.getPath())); InputStream is = new BufferedInputStream(new FileInputStream(file)); int n; while((n = is.read()) != -1) { zos.write(n); } is.close(); } } } }