2010-03-16 22 views

Respuesta

23

El camino webapp-relativa es /STUFF/read.txt.

podría utilizar ServletContext#getRealPath() para convertir una ruta web relativa a una ruta de sistema de archivos de disco local absoluta. De esta forma, puede usarlo más en las cosas usuales de java.io que en realidad no saben nada sobre el contexto web en el que se está ejecutando. P. ej.

String relativeWebPath = "/STUFF/read.txt"; 
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath); 
File file = new File(absoluteDiskPath); 
// Do your thing with File. 

Sin embargo, esto no funciona si el servidor está configurado para expandir la guerra en la memoria en lugar de en el disco. Usar getRealPath() siempre tiene esta advertencia y no se recomienda en aplicaciones del mundo real. Si todo lo que en última instancia se necesita sólo conseguir un InputStream de ese archivo, por lo que es probable que habría utilizado FileInputStream, es mejor que utilice ServletContext#getResourceAsStream() conseguirlo directamente como InputStream:

String relativeWebPath = "/STUFF/read.txt"; 
InputStream input = getServletContext().getResourceAsStream(relativeWebPath); 
// Do your thing with InputStream. 
+2

que desperdicia un solo día tratando y tratando .. enfrentado 'FileNotFoundException' y está funcionando en local, pero no en la web. Me frustré ... pero finalmente encontré tu respuesta e intenté ... funciona increíble ... Muchas gracias ... :) –

1

Si se encuentra en la ruta de clase , o puede agregar la carpeta a la ruta de clases, ¿Qué tal:. cargador de clases de cargador de clases = Thread.currentThread() getContextClassLoader(); InputStream input = classLoader.getResourceAsStream (fileName);

Cuestiones relacionadas