2010-10-08 4 views
8

Ich muss Textdatei aus dem Klassenpfad in Java-WAR-Anwendung lesen. Wie kann ich es als InputStream lesen? Die Datei befindet sich im Verzeichnis/WEB-INF/classes /, aber wenn ich den folgenden Code verwende, wird nur null zurückgegeben.Wie kann ich eine Datei aus dem Klassenverzeichnis in meinem WAR lesen?

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

Antwort

11

Präfix mit einem Schrägstrich die Wurzel des Classpath bezeichnen:

getResourceAsStream("/my_filename.txt") 

Alternativ können Sie die serlvetContext.getResourceAsStream(..) verwenden, die für die Ressourcen in Bezug auf den Kontextstamm aussieht. Also Klassen wären /WEB-INF/classes.

+0

Ich versuchte es auch, aber es gibt immer noch Null zurück. Hat servletContext den richtigen Classloader oder wie kann ich sicher sein, dass ich den richtigen Classloader verwende? – newbie

+0

@newbie:. Ein Trick besteht darin, eine Datei mit demselben Namen am selben Ort zu schreiben, wenn Sie nicht lesen können, und dann zu sehen, wo genau das Programm die Datei geschrieben hat. –

+0

@newbie ist die Datei sicher dort? mit dem gleichen Namen, Erweiterung und Fall? – Bozho

Verwandte Themen