private static File saveTemporaryZipFileAndThrow(String filename, List<File> files) throws IOException { File zipFile = new File(getTempDirectory(), filename); ZipOutputStream output = null; try { output = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile), BUFFER)); for (File file : files) { FileInputStream fi = new FileInputStream(file); BufferedInputStream input = null; try { input = new BufferedInputStream(fi, BUFFER); ZipEntry entry = new ZipEntry(file.getName()); output.putNextEntry(entry); copy(input, output); } finally { if (input != null) { input.close(); } } } } finally { if (output != null) { output.close(); } } return zipFile; }