2010-06-04 7 views
7

erstellen Was die Java entspricht diesen jar Befehl lautet:Java-Code eine JAR-Datei

C:\>jar cvf myjar.jar directory 

Ich mag diese JAR-Datei erstellen programmatisch als ich nicht, dass der Befehl jar sichergestellt werden kann, wird auf dem Systempfad, wo ich einfach den externen Prozess ausführen könnte.

Bearbeiten: Alles was ich will, ist ein Verzeichnis zu archivieren (und zu komprimieren). Muss keinem Java-Standard folgen. Dh: ein Standard-Reißverschluss ist in Ordnung.

Antwort

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) { 
    } 

Sie auch die Antwort von diesem Posten können How to use JarOutputStream to create a JAR file?

+0

er ... Sie wissen, dass es eine 'JarOutputStream' gibt, die eine Kindklasse von' ZipOutputStream' ist? – Powerlord

+0

Danke .. Sah das, aber auf der Suche nach nur ein Verzeichnis archivieren, das viele Verzeichnisse und Dateien enthält. Ich möchte nicht ein Eingabe-Array aller Dateien erstellen müssen. Ich möchte nur das Verzeichnis als Eingabe übergeben. –

+0

@Marcus müssen Sie für das rekursive Iterieren durch die Verzeichnisse codieren. –

Verwandte Themen