2010-06-04 18 views
7

¿Cuál es el equivalente Java a este comando jar:código Java para crear un archivo JAR

C:\>jar cvf myjar.jar directory 

Me gustaría crear este archivo JAR mediante programación, ya que no se puede asegurar que el comando será jar en la ruta del sistema donde podría simplemente ejecutar el proceso externo.

Editar: Todo lo que quiero es archivar (y comprimir) un directorio. No tiene que seguir ningún estándar de Java. Es decir: una cremallera estándar está bien.

Respuesta

11
// These are the files to include in the ZIP file 
    String[] source = new String[]{"source1", "source2"}; 

    // Create a buffer for reading the files 
    byte[] buf = new byte[1024]; 

    try { 
     // Create the ZIP file 
     String target = "target.zip"; 
     ZipOutputStream out = new ZipOutputStream(new FileOutputStream(target)); 

     // Compress the files 
     for (int i=0; i<source.length; i++) { 
      FileInputStream in = new FileInputStream(source[i]); 

      // Add ZIP entry to output stream. 
      out.putNextEntry(new ZipEntry(source[i])); 

      // Transfer bytes from the file to the ZIP file 
      int len; 
      while ((len = in.read(buf)) > 0) { 
       out.write(buf, 0, len); 
      } 

      // Complete the entry 
      out.closeEntry(); 
      in.close(); 
     } 

     // Complete the ZIP file 
     out.close(); 
    } catch (IOException e) { 
    } 

También puede utilizar la respuesta de este post How to use JarOutputStream to create a JAR file?

+0

er ... ¿sabes que hay un 'JarOutputStream' que es una clase secundaria de' ZipOutputStream'? – Powerlord

+0

Gracias. Vi eso, pero buscando simplemente archivar un directorio que contiene muchos directorios y archivos. No quiero tener que crear una matriz de entrada de todos los archivos. Solo quiero pasar el directorio como entrada. –

+0

@Marcus va a necesitar codificar para iterar recursivamente a través de los directorios. –

Cuestiones relacionadas