Bonjour,

J'essaie de récupérer un fichier situé dans le classpath de ma classe principale Java (nommée App). Je tente de récupérer ce fichier de la manière suivante (le code est simplifié à l'extrême pour montrer le problème seulement) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
        URL resourceUrl = App.class.getResource("test.txt");
        System.out.println(resourceUrl);
 
        if(resourceUrl != null){
        	File file = new File(resourceUrl.getFile());
        	FileReader reader = new FileReader(file);
	        reader.read();
      ...
Le programme est lancé via la ligne de commande suivante :

java -cp test.jar;resources/ fr.test.App

La classe principale est située dans test.jar et le dossier ressources contient bien le fichier test.txt.

Au lancement de l'application, j'obtiens l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
file:/C:/Users/sylsau/test%20and%20escape/tmp/test.txt
java.io.FileNotFoundException: C:\Users\sylsau\test%20and%20escape\tmp\test.txt (Le chemin d'accÞs spÚcifiÚ est introuvable)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileReader.<init>(Unknown Source)
        at fr.test.App.main(App.java:25)
Il localise bien le fichier via le getResource puisqu'il affiche la bonne URL. Cependant, le fait que j'ai mis des espaces dans un des répertoires du chemin empêche le chargement du fichier dans la suite de mon code.

Bien entendu, la présence des espaces dans le répertoire est volontaire. Je sais que sans espaces cela fonctionne.

Cependant, j'aimerais savoir s'il existe un moyen de contourner ce problème ou bien si c'est un bug de Java ? (Je précise que je suis en version 1.6).

Merci d'avance de votre aide.

Sylvain