/** * Unzips the content of the given zip file to the specified directory. * * @param zipFile the zip file to unzip * @param destDir root directory where the zip files will be extracted * * @throws IOException if any errors occur during the reading or writing */ public static void unzipFile(File zipFile, File destDir) throws IOException { destDir.mkdirs(); InputStream is = new BufferedInputStream(new FileInputStream(zipFile)); ZipUtil.unzipFile(is, destDir); }
public static void zipFileOrDirectory(File fileOrDirToZip, ZipOutputStream zos) throws IOException { if (fileOrDirToZip.isDirectory()) { File[] files = fileOrDirToZip.listFiles(); for (File f : files) { zipFileOrDirectory(f, zos); // recurse } } else { FileInputStream fis = null; try { fis = new FileInputStream(fileOrDirToZip); ZipEntry zipEntry = new ZipEntry(fileOrDirToZip.getPath()); zos.putNextEntry(zipEntry); StreamUtil.copy(fis, zos, false); } finally { if (fis != null) { fis.close(); } } } }
/** * Walks the entries of a zip file, allowing a listener to "visit" each node and perform tasks on * the zip entry. * * @param zipFile the zip file to walk * @param visitor the object that will be notified for each entry in the zip file * * @throws Exception if any errors occur during the reading or visiting */ public static void walkZipFile(File zipFile, ZipEntryVisitor visitor) throws Exception { FileInputStream fis = new FileInputStream(zipFile); try { InputStream zipContent = new BufferedInputStream(fis); try { walkZip(zipContent, visitor, false); } finally { zipContent.close(); } } finally { fis.close(); } }
ZipUtil.walkZipFile(zipFileToAnalyze, new ZipEntryVisitor() { @Override public boolean visit(ZipEntry entry, ZipInputStream stream) throws Exception {
ZipUtil.walkZipFile(zipFile, visitor); fileHashcodeMap.putAll(visitor.getFileHashcodeMap());
public void unzipDistro() throws DeploymentException { InputStream inputStream = getClass().getResourceAsStream("/cassandra.zip"); File deployDir = new File(deploymentOptions.getBasedir()); deployDir.mkdir(); try { log.info("Unzipping storage node to " + deployDir); ZipUtil.unzipFile(inputStream, deployDir); } catch (IOException e) { log.error("An error occurred while unzipping the storage zip file", e); throw new DeploymentException("An error occurred while unzipping the storage zip file", e); } }
ZipUtil.walkZipFile(zipFile, new ZipEntryVisitor() { public boolean visit(ZipEntry entry, ZipInputStream stream) throws Exception { if (!entry.isDirectory()) {
public InputStream retrievePackageBits(ResourcePackageDetails packageDetails) { Configuration pluginConfiguration = getResourceContext().getPluginConfiguration(); File packageFile = new File(pluginConfiguration.getSimpleValue(PROPERTY_FILENAME, null)); File fileToSend; try { if (packageFile.isDirectory()) { fileToSend = File.createTempFile("jopr-tomcat", ".zip"); ZipUtil.zipFileOrDirectory(packageFile, fileToSend); } else fileToSend = packageFile; return new BufferedInputStream(new FileInputStream(fileToSend)); } catch (IOException e) { throw new RuntimeException("Failed to retrieve package bits for " + packageDetails, e); } }
dir.mkdir(); ZipUtil.unzipFile(filesZip, dir); for (File file : dir.listFiles()) { JPADriftFile driftFile = new JPADriftFile(file.getName());
ZipUtil.walkZipFile(zipFile, visitor); ZipUtil.walkZipFile(zipFile, visitor);
/** * Zips up the given file or directory and stores the zip file at <code>zipFile</code>. * Note that zipping up a directory and if the output zip file is to be located in or under * the directory being zipped, an exception will be thrown - you must output the zip file * in another location outside of the directory being zipped. * * @param fileOrDirToZip what to zip up * @param zipFile where to store the zip file * @throws IOException */ public static void zipFileOrDirectory(File fileOrDirToZip, File zipFile) throws IOException { if (fileOrDirToZip.isDirectory()) { if (zipFile.getParentFile().getAbsolutePath().startsWith(fileOrDirToZip.getAbsolutePath())) { // if we allowed this, we could go in an infinite loop zipping up the every growing zip file throw new IOException("Cannot write the zip file [" + zipFile.getAbsolutePath() + "] in or under the same directory being zipped [" + fileOrDirToZip.getAbsolutePath() + "]"); } } ZipOutputStream zos = null; try { zos = new ZipOutputStream(new FileOutputStream(zipFile)); zipFileOrDirectory(fileOrDirToZip, zos); } finally { if (zos != null) { zos.close(); } } }
/** * Creates a new package described by the specified details. The destination of the content in the provided input * stream will be determined by the package name. * * @param contentFile the file to write the content to * @param content content to be written for the package. NOTE this Stream will be closed by this method. * @param unzip if <code>true</code>, the content stream will be treated like a ZIP file and be unzipped as * it is written, using the package name as the base directory; if <code>false</code> the * content will be written to directly to a file using the package name as the file name */ public void createContent(File destination, File content, boolean unzip) { try { if (unzip) { ZipUtil.unzipFile(content, destination); String sha = new MessageDigestGenerator(MessageDigestGenerator.SHA_256).calcDigestString(content); writeSHAToManifest(destination, sha); } else { InputStream contentStream = new BufferedInputStream(new FileInputStream(content)); FileUtil.writeFile(contentStream, destination); } } catch (IOException e) { throw new RuntimeException("Error creating artifact for contentFile: " + destination, e); } }
ZipUtil.walkZipFile(changeSetZip, new ChangeSetFileVisitor() {
private File backupAppBitsToTempFile(File appFile) throws Exception { File tempDir = getResourceContext().getTemporaryDirectory(); File tempFile = new File(tempDir.getAbsolutePath(), appFile.getName() + System.currentTimeMillis()); // The temp file shouldn't be there, but check and delete it if it is if (tempFile.exists()) { log.warn("Existing temporary file found and will be deleted at: " + tempFile); tempFile.delete(); } try { ZipUtil.zipFileOrDirectory(appFile, tempFile); } catch (IOException e) { log.error("Error backing up app " + appFile.getPath() + " to " + tempFile, e); if (tempFile.exists()) { tempFile.delete(); } throw e; } finally { if (!tempFile.exists()) { log.error("Temporary file for application update not written to: " + tempFile); throw new Exception(); } } return tempFile; }
/** * Creates a new package described by the specified details. The destination of the content in the provided input * stream will be determined by the package name. * * @param details describes the package being created * @param content content to be written for the package. NOTE this Stream will be closed by this method. * @param unzip if <code>true</code>, the content stream will be treated like a ZIP file and be unzipped as * it is written, using the package name as the base directory; if <code>false</code> the * @param createBackup If <code>true</code>, the original file will be backed up to file.bak */ public void createContent(PackageDetails details, File content, boolean unzip) { File destination = getPath(details); try { if (unzip) { ZipUtil.unzipFile(content, destination); } else { FileUtil.copyFile(content, destination); } details.setFileName(destination.getPath()); } catch (IOException e) { throw new RuntimeException("Error creating artifact from details: " + destination, e); } }