// TODO: subdirectories // Now sorts file list first (to ensure reproducable MD5 of zip) static int dir2zip(File inDir, ZipOutputStream outZip, String outPrefix) ctex { new L files; for (File f : inDir.listFiles()) if (f.isFile()) files.add(f); sortFilesByName(files); for (File f : files) { System.out.println("Copying " + f.getName()); outZip.putNextEntry(new ZipEntry(outPrefix + f.getName())); InputStream fin = new FileInputStream(f); copyStream(fin, outZip); fin.close(); } return files.size(); } static int dir2zip(File inDir, ZipOutputStream outZip) { return dir2zip(inDir, outZip, ""); } static int dir2zip(String inDir, ZipOutputStream outZip) { return dir2zip(new File(inDir), outZip, ""); } static int dir2zip(File inDir, File zip, S outPrefix default "") ctex { mkdirsForFile(zip); FileOutputStream fout = new FileOutputStream(zip); ZipOutputStream outZip = new ZipOutputStream(fout); try { ret dir2zip(inDir, outZip, outPrefix); } finally { outZip.close(); } }