J'ai essayé de créer un objet à partir de FileInputStream
et de transmettre la valeur relative d'un fichier à son constructeur, mais cela ne fonctionne pas correctement et j'ai lancé un 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 premier /
, 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 vous assurer que le programme s'exécute d'où vous le pensez en en vérifiant le répertoire courant :
System.out.println(System.getProperty("user.dir"));
Les autres affiches ont raison, le chemin que vous donnez n'est pas un chemin relatif. Vous pourriez potentiellement faire quelque chose comme this.getClass().getResourceAsStream("Path relative to the current class")
. Cela vous permettrait de charger un fichier en tant que flux en fonction d'un chemin d'accès 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.String)
InputStream is = new FileInputStream("C:/files/somefile.txt");
windows ne prend pas en charge le /
symbole comme "racine"
Si vous voulez charger un fichier que vous mettrez dans votre JAR, vous devez utiliser
getClass().getResource("path to your file");
ou
getClass().getResourceAsStream("path to your file");