Bonjour, j'ai une application qui doit créer un nouveau jar avec des fichiers spécifiés par l'utilisateur.
Je récupère donc les chemins de ces 2 fichiers dans la forme:
C:\niania\fichier.txt

Je crée donc un FileInputStream vers chacun de ces fichiers, cependant il me met que le InputStream vaut null. Je ne vois pas d'où vient le problème, j'ai contrôlé les chemins dans un println, tout est est ok.

voici la méthode qui crée le jar:

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
public void jar() { //méthode pour creer le jar
		try {
			Pattern p = Pattern.compile("\\\\");
			String item1[] = p.split(chemin1);
			String item2[] = p.split(chemin2);
			String nom1 = item1[item1.length-1];
			String nom2 = item2[item2.length-1];
			File[] fichiers = new File[]{new File("/MANIFEST.MF"), new File("/class_main.class"), new File("/thread_extract.class"), new File(nom1), new File(nom2), new File("config.ini")};
			FileOutputStream stream = new FileOutputStream("fichier_binder.jar");
			InputStream reader;
			JarOutputStream out = new JarOutputStream(stream);
			JarEntry entry;
 
			for(int i=0 ; i < fichiers.length ; i++) {
				if(fichiers[i].getName().equals("MANIFEST.MF"))
					entry = new JarEntry("META-INF/"+fichiers[i].getName()); //on le met dans le dossier META-INF
				else
					entry = new JarEntry(fichiers[i].getName());
 
				out.putNextEntry(entry);
				if(fichiers[i].getName().equals("config.ini")) //il n'est pas en ressource
					reader = new FileInputStream(fichiers[i].getName());
				else if(fichiers[i].equals(nom1))
					reader = new FileInputStream(chemin1);
				else if(fichiers[i].equals(nom2))
					reader = new FileInputStream(chemin2);
					else
					reader = getClass().getResourceAsStream(fichiers[i].getName());
 
				if(reader != null) {
					byte[] tab = new byte[1024];
					int nbreoctet = 0; //on prepare les variables pour la copie
 
					while((nbreoctet = reader.read(tab)) != -1) {
						out.write(tab, 0, nbreoctet);
					}
					out.flush();
					reader.close();
					jop.showMessageDialog(null, fichiers[i].getName()+" ajoute avec succès", "fichier ajoute", JOptionPane.INFORMATION_MESSAGE);
				}
				else {
					jop.showMessageDialog(null, "le fichier "+fichiers[i].getName()+" est manquant", "fichier manquant", JOptionPane.ERROR_MESSAGE);
				}
			}
			out.close();
			stream.close();
		}catch(Exception e) { e.printStackTrace(); }
	}
 
}
Là j'ai vraiment besoin de votre aide^^
Donc si quelqu'un voit d'où peu provenir le problème...

Merci d'avance