Bonjour,
J'ai programmé une application qui lit des fichiers textes situé dans le dossier. Seulement quand je transforme le programme, il n'est plus capable d'aller chercher ces fichiers. J'ai donc utiliser ClassLoader.getSystemResourceAsStream("nomfichier.txt") et transformer mon FileReader en InputStremReader(inputStream). Mais ça marche toujours pas il me ressort :
Exception in thread "main" java.lang.NullPointerException
at java.io.Reader.<init>(Unknown Source)
at java.io.InputStreamReader.<init>(Unknown Source)
Je suppose que c'est mon appelation dans le ClassLoader qui bug mais je sais pas comment corriger.
Je vous donne le code pour que ce soit plus clair :
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
59 public static Ligne lireFichier(InputStream inputStream){ int nombreStation=0; String line; try{ Scanner sc = new Scanner(new InputStreamReader(inputStream)); while(sc.hasNextLine()){ nombreStation++; line=sc.nextLine(); } } finally{;} Arret[] ligne=new Arret[nombreStation]; try{ Scanner sc = new Scanner(new InputStreamReader(inputStream)); int i = 0; while(sc.hasNextLine()){ line=sc.nextLine(); StringTokenizer st = new StringTokenizer(line, "\t"); String arret=st.nextToken(); String tempsString=st.nextToken(); double temps=Double.parseDouble(tempsString); ligne[i]=new Arret(arret,temps); i++; } } finally{;} String nomLigne=" "; Ligne ligneCree = new Ligne(ligne, nomLigne); return ligneCree; } public static Reseau creationDuReseau(){ Ligne[] ligneMetro = new Ligne[20]; ligneMetro[0]=lireFichier(ClassLoader.getSystemResourceAsStream("/TP-Projet Rémy/Ligne1.txt")); ligneMetro[1]=lireFichier(ClassLoader.getSystemResourceAsStream("/workspace/TP-Projet Rémy/Ligne2.txt")); ligneMetro[2]=lireFichier(ClassLoader.getSystemResourceAsStream("/workspace/TP-Projet Rémy/Ligne3.txt")); ligneMetro[3]=lireFichier(ClassLoader.getSystemResourceAsStream("/workspace/TP-Projet Rémy/Ligne3bis.txt")); ligneMetro[4]=lireFichier(ClassLoader.getSystemResourceAsStream("/workspace/TP-Projet Rémy/Ligne4.txt")); ligneMetro[5]=lireFichier(ClassLoader.getSystemResourceAsStream("/workspace/TP-Projet Rémy/Ligne5.txt")); ligneMetro[6]=lireFichier(ClassLoader.getSystemResourceAsStream("/workspace/TP-Projet Rémy/Ligne6.txt")); ligneMetro[7]=lireFichier(ClassLoader.getSystemResourceAsStream("/workspace/TP-Projet Rémy/Ligne7bisn1.txt")); ligneMetro[8]=lireFichier(ClassLoader.getSystemResourceAsStream("/workspace/TP-Projet Rémy/Ligne7bisn2.txt")); ligneMetro[9]=lireFichier(ClassLoader.getSystemResourceAsStream("/TP-Projet Rémy/Ligne7n1.txt")); ligneMetro[10]=lireFichier(ClassLoader.getSystemResourceAsStream("/TP-Projet Rémy/Ligne7n2.txt")); ligneMetro[11]=lireFichier(ClassLoader.getSystemResourceAsStream("/TP-Projet Rémy/Ligne8.txt")); ligneMetro[12]=lireFichier(ClassLoader.getSystemResourceAsStream("/TP-Projet Rémy/Ligne9.txt")); ligneMetro[13]=lireFichier(ClassLoader.getSystemResourceAsStream("/TP-Projet Rémy/Ligne10n1.txt")); ligneMetro[14]=lireFichier(ClassLoader.getSystemResourceAsStream("/TP-Projet Rémy/Ligne10n2.txt")); ligneMetro[15]=lireFichier(ClassLoader.getSystemResourceAsStream("/TP-Projet Rémy/Ligne11.txt")); ligneMetro[16]=lireFichier(ClassLoader.getSystemResourceAsStream("TP-Projet Rémy/Ligne12.txt")); ligneMetro[17]=lireFichier(ClassLoader.getSystemResourceAsStream("TP-Projet Rémy/Ligne13n1.txt")); ligneMetro[18]=lireFichier(ClassLoader.getSystemResourceAsStream("TP-Projet Rémy/Ligne13n2.txt")); ligneMetro[19]=lireFichier(ClassLoader.getSystemResourceAsStream("TP-Projet Rémy/Ligne14.txt")); Reseau reseauMetro= new Reseau(ligneMetro); return reseauMetro; }
Et est-ce qu'il faut donner le chemin d'accès complet même pour un jar? Si je veux utiliser ce programme sur un autre ordinateur, il va falloir que je modifie le programme?
Merci d'avance pour votre réponse.
Partager