JavaでDirectoryをZIP圧縮するためのソースコード private static final int _4K_BYTES = 4096; // core part... piece of cake.... public final static void zipDirecory(File dir, File zipFile) throws IOException { if (!dir.isDirectory()) { throw new IllegalArgumentException("Not directory :" + dir); } try (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile))) { File parentFile = dir.getParentFile(); Path baPath = parentFile == null ? dir.toPath() : parentFile.toPath(); zipDirectory(dir, new byte[_4K_BYTES], out, baPath); } } private static void zipDirectory(File dir, byte[] bs, ZipOutputStream out, Path basePath) throws IOException { for (File f : dir.listFiles()) { if (f.isDirectory()) { zipDirectory(f, bs, out, basePath); } else { out.putNextEntry(new ZipEntry(basePath.relativize(f.toPath()).toFile().getPath())); copy(new FileInputStream(f), out, bs); } } } // trivial helper methods... please use java c
IT関連の技術やプログラミングを中心に記事を書いています。ハードウェアも好きなので、日々のちょっとしたお役立ち情報も投稿しています。