Extraire fichiers d un jar
Bonjour,
je voulais une methode me permettant d extraire les fichiers d un jar.
Voici la methode que j ai faite:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
import java.io.File;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.net.URL;
import java.util.jar.*;
import java.util.Enumeration;
public class Test {
public static void main(String[] args) {
JarFile jarFile = null;
try {
jarFile = new JarFile("C:\\Folder1\\data.jar");
String jarName = jarFile.getName();
String jarFolder = jarName.substring(0, jarName
.lastIndexOf(File.separator));
System.out.println("jarName = " + jarName);
System.out.println("jarFolder = " + jarFolder);
// get the list of the jar file entries
Enumeration enumeration = jarFile.entries();
int i=0;
while (enumeration.hasMoreElements()) {
String elementName = enumeration.nextElement().toString();
// while the current is a directory, create the directory and go to the next element
while (jarFile.getEntry(elementName).isDirectory()) {
new File(jarFolder + File.separator + elementName).mkdirs();
elementName = enumeration.nextElement().toString();
}
URL myURL = new URL("jar:file:/" + jarName + "!/" + elementName);
BufferedInputStream input = new BufferedInputStream(myURL
.openStream());
i++;
System.out.println("Extracted Element n " +i + " = "+ jarFolder + File.separator + elementName);
BufferedOutputStream output = new BufferedOutputStream(
new FileOutputStream(jarFolder + File.separator
+ elementName));
int c;
while ((c = input.read()) != -1) {
output.write(c);
}
input.close();
output.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
} |
Elle semble marcher.
Mais je pense qu il doit il y avoir d autres facons bien meilleures, donc si qqn a des suggestions ou modifications, n hesitez pas.
Et si cette petite fonction peut aider un debutant Java, c est tout aussi bien