2010-10-08 48 views
8

J'ai besoin de lire le fichier texte du classpath dans l'application Java WAR. Comment puis-je le lire comme InputStream. Le fichier se trouve dans/WEB-INF/classes/dossier, mais lorsque j'utilise le code suivant, il renvoie simplement null.Comment puis-je lire le fichier du répertoire des classes dans mon WAR?

InputStream input = servletContext.getClass().getClassLoader().getResourceAsStream("my_filename.txt"); 

Répondre

11

Prefix avec une barre oblique pour désigner la racine du classpath:

getResourceAsStream("/my_filename.txt") 

Vous pouvez également utiliser le serlvetContext.getResourceAsStream(..) qui recherche des ressources par rapport à la racine du contexte. Donc, les classes seraient /WEB-INF/classes.

+0

J'ai essayé avec cela aussi, mais il renvoie toujours null. Est-ce que servletContext a le bon classloader ou comment puis-je être sûr que j'utilise le bon classloader? – newbie

+0

@newbie:. Une astuce consiste à écrire un fichier avec le même nom au même endroit, si vous ne pouvez pas lire, puis voir où exactement le programme a écrit le fichier. –

+0

@newbie est le fichier, c'est sûr? avec le même nom, l'extension et le cas? – Bozho