J’ai essayé de créer un object à partir de FileInputStream
et de transmettre la valeur relative d’un fichier à son constructeur, mais cela ne fonctionnait pas correctement et FileNotFoundException
lancé une FileNotFoundException
try { InputStream is = new FileInputStream("/files/somefile.txt"); } catch (FileNotFoundException ex) { System.out.println("File not found !"); }
Le /
au début rendra le chemin absolu au lieu de relatif.
Essayez de supprimer le /
, remplacez donc:
InputStream is = new FileInputStream("/files/somefile.txt");
avec:
InputStream is = new FileInputStream("files/somefile.txt");
Si vous rencontrez toujours des problèmes, essayez de vérifier que le programme est bien exécuté en vérifiant le répertoire actuel :
System.out.println(System.getProperty("user.dir"));
Les autres affiches ont raison, le chemin que vous donnez n’est pas relatif. Vous pouvez potentiellement faire quelque chose comme this.getClass().getResourceAsStream("Path relative to the current class")
. Cela vous permettrait de charger un fichier en tant que stream basé sur un chemin relatif à la classe à partir de laquelle vous l’appelez.
Voir l’API Java pour plus de détails: http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResourceAsStream(java.lang.Ssortingng)
InputStream is = new FileInputStream("C:/files/somefile.txt");
Windows ne supporte pas le symbole /
tant que “root”
Si vous voulez charger un fichier que vous allez mettre dans votre fichier JAR, vous devez utiliser
getClass().getResource("path to your file");
ou
getClass().getResourceAsStream("path to your file");