@Test public void testPackageContent() { try { FileOutputStream f = new FileOutputStream(BASE_PATH + "/../" + packageName + ".zip"); CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());//Adler32 is faster than CRC32 ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(csum)); out.setComment("some comments"); File srcDir = new File(BASE_PATH); zipFile(out, srcDir, "packageName"); out.close();
/** * zip the given file * @param out - ZipOutputStream * @param srcDir - if it is a file then add this file into zip, if it is dir, then call zipFile cascade * @param filePath - the filepath in zipfile * @throws IOException */ private void zipFile(ZipOutputStream out, File srcDir, String filePath) throws IOException{ for(File file : srcDir.listFiles()){ if(file.isDirectory()){ zipFile(out, file, filePath+"/"+file.getName()); continue; } Logger.global.info("Writing file : "+file.getName()); FileInputStream in = new FileInputStream(file); out.putNextEntry(new ZipEntry(filePath+"/"+file.getName())); byte[] b = new byte[1024]; int off = 0; while((in.read(b,off,1024)) != -1){ out.write(b); } in.close(); } }