Categorías
Real Methods

Descomprima un archivo .jar en un programa Java

Aquí hay un método que puede descomprimir / descomprimir el archivo .jar y extraer archivos dentro de un directorio de destino.

Hay principalmente 2 pasos:
1) Cree todos los directorios dentro del archivo jar
2) Cree todos los archivos dentro del archivo jar

Dado que los archivos en .jar no están en un orden determinado, debemos iterar dos veces para lograr los 2 pasos.

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.Enumeration;
 
public class UnzipJar {
 
	public static void main(String[] args) throws IOException {
		unzipJar("./src/dest", "./src/a.jar");
	}
 
	public static void unzipJar(String destinationDir, String jarPath) throws IOException {
		File file = new File(jarPath);
		JarFile jar = new JarFile(file);
 
		// fist get all directories,
		// then make those directory on the destination Path
		for (Enumeration<JarEntry> enums = jar.entries(); enums.hasMoreElements();) {
			JarEntry entry = (JarEntry) enums.nextElement();
 
			String fileName = destinationDir + File.separator + entry.getName();
			File f = new File(fileName);
 
			if (fileName.endsWith("/")) {
				f.mkdirs();
			}
 
		}
 
		//now create all files
		for (Enumeration<JarEntry> enums = jar.entries(); enums.hasMoreElements();) {
			JarEntry entry = (JarEntry) enums.nextElement();
 
			String fileName = destinationDir + File.separator + entry.getName();
			File f = new File(fileName);
 
			if (!fileName.endsWith("/")) {
				InputStream is = jar.getInputStream(entry);
				FileOutputStream fos = new FileOutputStream(f);
 
				// write contents of 'is' to 'fos'
				while (is.available() > 0) {
					fos.write(is.read());
				}
 
				fos.close();
				is.close();
			}
		}
	}
}
  Ordenar contenido en un archivo txt

Para descomprimir un archivo .zip, el enfoque es exactamente el mismo, simplemente reemplace la clase «JarFile» por «java.util.zip.ZipFile».

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *