Bonjour,
je voulais une methode me permettant d extraire les fichiers d un jar.
Voici la methode que j ai faite:
Elle semble marcher.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } } }
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
Partager