ディレクトリを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();}}}}