getResourceAsStream()
renvoie InputStream
. Votre code essaie essentiellement de trouver le fichier '/ ressources /' qui n'est pas un fichier mais un répertoire, donc getResourceAsStream()
renvoie null
pour cela.
Il est inutile d'imprimer un InputStream
. Qu'est-ce que vous pourriez faire quelque chose comme ceci:
InputStream is = MyStaticClass.class.getResourceAsStream("/ressources/" + "file.File1")
Et puis lire son contenu (par exemple, en utilisant des méthodes de InputStream
read()
, ou l'envelopper avec un InputStreamReader
et de l'utiliser est read()
Il est difficile de donner plus de conseils que. Je ne sais pas ce que vous voulez faire avec ce que vous lisez.
une mise à jour pour le code de mise à jour question suit
getResource()
retourne une instance URL
, qui ne convient pas f ou l'impression aussi (et pour la concaténation en utilisant l'opérateur +). Mais vous pouvez le convertir en File
par exemple si vous voulez avec l'aide de getFile()
méthode:
File file = new File(MyStaticClass.class.getResource("/ressources/" + "file.File" + i).getFile());
S'il vous plaît noter également que getResource()
est appelée sur le nom complet de ressources et non pas seulement le nom du répertoire.
Ensuite, vous pouvez travailler avec cette instance File
.
Mais si vous voulez juste lire le contenu des ressources, vous pouvez faire quelque chose comme ce qui suit (sans besoin de se URL
par exemple):
InputStream is = MyStaticClass.class.getResourceAsStream("/ressources/" + "file.File1")
Scanner scanner = new Scanner(new InputStreamReader(is, "utf-8"));
try {
if (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
} finally {
scanner.close();
}
Cet exemple suppose que votre fichier est un fichier texte et a au moins une ligne. Il imprime cette ligne à la console.
essayez ceci http://stackoverflow.com/questions/941754/how-to-get-a-path-to-a-resource-in-a-java-jar-file –