2010-10-08 4 views
8

Ho bisogno di leggere il file di testo dal classpath nell'applicazione Java WAR. Come posso leggerlo come InputStream. Il file si trova in/WEB-INF/classes/folder, ma quando uso il seguente codice, restituisce semplicemente null.Come posso leggere il file dalla directory classes nel mio WAR?

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

risposta

11

prefisso con una barra per indicare la radice del classpath:

getResourceAsStream("/my_filename.txt") 

In alternativa, è possibile utilizzare il serlvetContext.getResourceAsStream(..) che cerca le risorse relative alla root del contesto. Quindi le classi sarebbero /WEB-INF/classes.

+0

Ho provato anche con quello, ma restituisce ancora null. ServletContext ha giusto il classloader o come posso essere sicuro che sto usando il giusto programma di caricamento di classi? – newbie

+0

@newbie:. Un trucco è scrivere un file con lo stesso nome nella stessa posizione, se non puoi leggere, e poi vedere dove esattamente il programma ha scritto il file. –

+0

@newbie è il file di sicuro lì? con lo stesso nome, estensione e custodia? – Bozho