2009-08-19 2 views
3

В принципе, у меня есть файл jar, который я хочу разархивировать в определенную папку из теста junit.Самый простой способ распаковать банку в java

Что такое самый простой способ сделать это? Я желаю использовать бесплатную стороннюю библиотеку, если это необходимо.

ответ

6

Вы можете использовать java.util.jar.JarFile для перебора записей в файле, извлечение каждого из них через его InputStream и запись данных во внешний файл. Apache Commons IO предоставляет утилиты, чтобы сделать это немного менее неуклюжим.

2

Jar в основном зашифрован с использованием ZIP-алгоритма, поэтому вы можете использовать winzip или winrar для извлечения.

Если вы ищете программный способ, то правильный ответ вернее.

+1

Не будет работать в случае выполнения OP из теста junit. – Chadwick

1

Из командной строки типа jar xf foo.jar или 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(); 
    } 
} 
Смежные вопросы