List of usage examples for java.util.jar JarOutputStream closeEntry
public void closeEntry() throws IOException
From source file:boa.compiler.BoaCompiler.java
private static void putJarEntry(final JarOutputStream jar, final File f, final String path) throws IOException { jar.putNextEntry(new ZipEntry(path)); final InputStream in = new BufferedInputStream(new FileInputStream(f)); try {/*from w w w .ja va 2s . co m*/ final byte[] b = new byte[4096]; int len; while ((len = in.read(b)) > 0) jar.write(b, 0, len); } finally { in.close(); } jar.closeEntry(); }
From source file:io.fabric8.maven.proxy.impl.MavenProxyServletSupportTest.java
private static void addEntry(JarOutputStream jas, String name, byte[] content) throws Exception { JarEntry entry = new JarEntry(name); jas.putNextEntry(entry);// w ww . j a va 2 s . co m if (content != null) { jas.write(content); } jas.closeEntry(); }
From source file:net.technicpack.launchercore.util.ZipUtils.java
public static void copyMinecraftJar(File minecraft, File output) throws IOException { String[] security = { "MOJANG_C.DSA", "MOJANG_C.SF", "CODESIGN.RSA", "CODESIGN.SF" }; JarFile jarFile = new JarFile(minecraft); try {/*from w w w.j a va 2 s.co m*/ String fileName = jarFile.getName(); String fileNameLastPart = fileName.substring(fileName.lastIndexOf(File.separator)); JarOutputStream jos = new JarOutputStream(new FileOutputStream(output)); Enumeration<JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { JarEntry entry = entries.nextElement(); if (containsAny(entry.getName(), security)) { continue; } InputStream is = jarFile.getInputStream(entry); //jos.putNextEntry(entry); //create a new entry to avoid ZipException: invalid entry compressed size jos.putNextEntry(new JarEntry(entry.getName())); byte[] buffer = new byte[4096]; int bytesRead = 0; while ((bytesRead = is.read(buffer)) != -1) { jos.write(buffer, 0, bytesRead); } is.close(); jos.flush(); jos.closeEntry(); } jos.close(); } finally { jarFile.close(); } }
From source file:net.adamcin.oakpal.testing.TestPackageUtil.java
private static void add(final File root, final File source, final JarOutputStream target) throws IOException { if (root == null || source == null) { throw new IllegalArgumentException("Cannot add from a null file"); }//from w w w .j av a2s .c o m if (!(source.getPath() + "/").startsWith(root.getPath() + "/")) { throw new IllegalArgumentException("source must be the same file or a child of root"); } final String relPath; if (!root.getPath().equals(source.getPath())) { relPath = source.getPath().substring(root.getPath().length() + 1).replace(File.separator, "/"); } else { relPath = ""; } if (source.isDirectory()) { if (!relPath.isEmpty()) { String name = relPath; if (!name.endsWith("/")) { name += "/"; } JarEntry entry = new JarEntry(name); entry.setTime(source.lastModified()); target.putNextEntry(entry); target.closeEntry(); } File[] children = source.listFiles(); if (children != null) { for (File nestedFile : children) { add(root, nestedFile, target); } } } else { JarEntry entry = new JarEntry(relPath); entry.setTime(source.lastModified()); target.putNextEntry(entry); try (InputStream in = new BufferedInputStream(new FileInputStream(source))) { byte[] buffer = new byte[1024]; while (true) { int count = in.read(buffer); if (count == -1) break; target.write(buffer, 0, count); } target.closeEntry(); } } }
From source file:org.wso2.carbon.automation.test.utils.common.FileManager.java
public static void copyJarFile(File sourceFile, String destinationDirectory) throws IOException { File destinationFileDirectory = new File(destinationDirectory); JarFile jarFile = new JarFile(sourceFile); String fileName = jarFile.getName(); String fileNameLastPart = fileName.substring(fileName.lastIndexOf(File.separator)); File destinationFile = new File(destinationFileDirectory, fileNameLastPart); JarOutputStream jarOutputStream = null; try {/*from w w w . j av a2 s.co m*/ jarOutputStream = new JarOutputStream(new FileOutputStream(destinationFile)); Enumeration<JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { JarEntry jarEntry = entries.nextElement(); InputStream inputStream = jarFile.getInputStream(jarEntry); //jarOutputStream.putNextEntry(jarEntry); //create a new jarEntry to avoid ZipException: invalid jarEntry compressed size jarOutputStream.putNextEntry(new JarEntry(jarEntry.getName())); byte[] buffer = new byte[4096]; int bytesRead = 0; while ((bytesRead = inputStream.read(buffer)) != -1) { jarOutputStream.write(buffer, 0, bytesRead); } inputStream.close(); jarOutputStream.flush(); jarOutputStream.closeEntry(); } } finally { if (jarOutputStream != null) { try { jarOutputStream.close(); } catch (IOException e) { } } } }
From source file:org.wso2.esb.integration.common.utils.common.FileManager.java
public static void copyJarFile(File sourceFile, String destinationDirectory) throws IOException { File destinationFileDirectory = new File(destinationDirectory); JarFile jarFile = new JarFile(sourceFile); String fileName = jarFile.getName(); String fileNameLastPart = fileName.substring(fileName.lastIndexOf(File.separator)); File destinationFile = new File(destinationFileDirectory, fileNameLastPart); JarOutputStream jarOutputStream = null; try {//from w w w. ja va 2s . c om jarOutputStream = new JarOutputStream(new FileOutputStream(destinationFile)); Enumeration<JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { JarEntry jarEntry = entries.nextElement(); InputStream inputStream = jarFile.getInputStream(jarEntry); //jarOutputStream.putNextEntry(jarEntry); //create a new jarEntry to avoid ZipException: invalid jarEntry compressed size jarOutputStream.putNextEntry(new JarEntry(jarEntry.getName())); byte[] buffer = new byte[4096]; int bytesRead = 0; while ((bytesRead = inputStream.read(buffer)) != -1) { jarOutputStream.write(buffer, 0, bytesRead); } inputStream.close(); jarOutputStream.flush(); jarOutputStream.closeEntry(); } } finally { if (jarOutputStream != null) { try { jarOutputStream.close(); } catch (IOException e) { } } } }
From source file:org.wso2.carbon.integration.common.utils.FileManager.java
public static void copyJarFile(File sourceFile, String destinationDirectory) throws IOException { File destinationFileDirectory = new File(destinationDirectory); JarFile jarFile = new JarFile(sourceFile); String fileName = jarFile.getName(); String fileNameLastPart = fileName.substring(fileName.lastIndexOf(File.separator)); File destinationFile = new File(destinationFileDirectory, fileNameLastPart); JarOutputStream jarOutputStream = null; try {//from w w w . jav a 2 s . c o m jarOutputStream = new JarOutputStream(new FileOutputStream(destinationFile)); Enumeration<JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { JarEntry jarEntry = entries.nextElement(); InputStream inputStream = jarFile.getInputStream(jarEntry); //jarOutputStream.putNextEntry(jarEntry); //create a new jarEntry to avoid ZipException: invalid jarEntry compressed size jarOutputStream.putNextEntry(new JarEntry(jarEntry.getName())); byte[] buffer = new byte[4096]; int bytesRead = 0; while ((bytesRead = inputStream.read(buffer)) != -1) { jarOutputStream.write(buffer, 0, bytesRead); } inputStream.close(); jarOutputStream.flush(); jarOutputStream.closeEntry(); } } finally { if (jarOutputStream != null) { try { jarOutputStream.close(); } catch (IOException e) { //ignore } } } }
From source file:org.apache.hadoop.hbase.TestClassFinder.java
/** * Makes a jar out of some class files. Unfortunately it's very tedious. * @param filesInJar Files created via compileTestClass. * @return path to the resulting jar file. *//*from w w w .j a va 2 s . c o m*/ private static String packageAndLoadJar(FileAndPath... filesInJar) throws Exception { // First, write the bogus jar file. String path = basePath + "jar" + jarCounter.incrementAndGet() + ".jar"; Manifest manifest = new Manifest(); manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0"); FileOutputStream fos = new FileOutputStream(path); JarOutputStream jarOutputStream = new JarOutputStream(fos, manifest); // Directory entries for all packages have to be added explicitly for // resources to be findable via ClassLoader. Directory entries must end // with "/"; the initial one is expected to, also. Set<String> pathsInJar = new HashSet<String>(); for (FileAndPath fileAndPath : filesInJar) { String pathToAdd = fileAndPath.path; while (pathsInJar.add(pathToAdd)) { int ix = pathToAdd.lastIndexOf('/', pathToAdd.length() - 2); if (ix < 0) { break; } pathToAdd = pathToAdd.substring(0, ix); } } for (String pathInJar : pathsInJar) { jarOutputStream.putNextEntry(new JarEntry(pathInJar)); jarOutputStream.closeEntry(); } for (FileAndPath fileAndPath : filesInJar) { File file = fileAndPath.file; jarOutputStream.putNextEntry(new JarEntry(fileAndPath.path + file.getName())); byte[] allBytes = new byte[(int) file.length()]; FileInputStream fis = new FileInputStream(file); fis.read(allBytes); fis.close(); jarOutputStream.write(allBytes); jarOutputStream.closeEntry(); } jarOutputStream.close(); fos.close(); // Add the file to classpath. File jarFile = new File(path); assertTrue(jarFile.exists()); URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader(); Method method = URLClassLoader.class.getDeclaredMethod("addURL", new Class[] { URL.class }); method.setAccessible(true); method.invoke(urlClassLoader, new Object[] { jarFile.toURI().toURL() }); return jarFile.getAbsolutePath(); }
From source file:org.roda.core.util.ZipUtility.java
/** * Creates ZIP file with the files inside directory <code>contentsDir</code> . * //from w w w . ja v a 2 s .c o m * @param newZipFile * the ZIP file to create * @param contentsDir * the directory containing the files to compress. * @return the created ZIP file. * @throws IOException * if something goes wrong with creation of the ZIP file or the * reading of the files to compress. */ public static File createZIPFile(File newZipFile, File contentsDir) throws IOException { List<File> contentAbsoluteFiles = FileUtility.listFilesRecursively(contentsDir); FileOutputStream zipStream = new FileOutputStream(newZipFile); JarOutputStream jarOutputStream = new JarOutputStream(new BufferedOutputStream(zipStream)); // Create a buffer for reading the files byte[] buffer = new byte[BUFFER_SIZE]; Iterator<File> iterator = contentAbsoluteFiles.iterator(); while (iterator.hasNext()) { File absoluteFile = iterator.next(); String relativeFile = getFilePathRelativeTo(absoluteFile, contentsDir); FileInputStream inputStream = new FileInputStream(absoluteFile); BufferedInputStream in = new BufferedInputStream(inputStream); // Add ZIP entry to output stream. jarOutputStream.putNextEntry(new JarEntry(relativeFile)); LOGGER.trace("Adding {}", relativeFile); int length; while ((length = in.read(buffer)) > 0) { jarOutputStream.write(buffer, 0, length); } // Complete the entry jarOutputStream.closeEntry(); in.close(); inputStream.close(); } // Complete the ZIP file jarOutputStream.close(); zipStream.close(); return newZipFile; }
From source file:org.apache.brooklyn.rest.resources.BundleAndTypeResourcesTest.java
private static File createJar(Map<String, String> files) throws Exception { File f = Os.newTempFile("osgi", "jar"); JarOutputStream zip = new JarOutputStream(new FileOutputStream(f)); for (Map.Entry<String, String> entry : files.entrySet()) { JarEntry ze = new JarEntry(entry.getKey()); zip.putNextEntry(ze);/*from www .j av a 2 s . co m*/ zip.write(entry.getValue().getBytes()); } zip.closeEntry(); zip.flush(); zip.close(); return f; }