2009-08-19 8 views

Répondre

6

Vous pouvez utiliser java.util.jar.JarFile pour parcourir les entrées du fichier, en extrayant chacune par l'intermédiaire de InputStream et en écrivant les données dans un fichier externe. Apache Commons IO fournit des utilitaires pour rendre cela un peu moins maladroit.

2

Jar est essentiellement zippé en utilisant l'algorithme ZIP, de sorte que vous pouvez utiliser winzip ou winrar pour extraire.

Si vous êtes à la recherche de manière programmatique, la première réponse est plus correcte.

+1

Ne fonctionnera pas dans le cas de l'exécution d'OP à partir d'un test de junit. – Chadwick

1

ligne de commande de type jar xf foo.jar ou unzip foo.jar

4
ZipInputStream in = null; 
OutputStream out = null; 

try { 
    // Open the jar file 
    String inFilename = "infile.jar"; 
    in = new ZipInputStream(new FileInputStream(inFilename)); 

    // Get the first entry 
    ZipEntry entry = in.getNextEntry(); 

    // Open the output file 
    String outFilename = "o"; 
    out = new FileOutputStream(outFilename); 

    // Transfer bytes from the ZIP file to the output file 
    byte[] buf = new byte[1024]; 
    int len; 
    while ((len = in.read(buf)) > 0) { 
     out.write(buf, 0, len); 
    } 
} catch (IOException e) { 
    // Manage exception 
} finally { 
    // Close the streams 
    if (out != null) { 
     out.close(); 
    } 

    if (in != null) { 
     in.close(); 
    } 
} 
Questions connexes