Cómo cargar un archivo de configuración XML con FileInputStream, pero conseguir un FileNotFoundException

StackOverflow https://stackoverflow.com/questions/2211991

Pregunta

Mi trayectoria de la estructura en Eclipse tiene este aspecto:

ProjectName
   -- WEB-INF
      -- classes
         -- myClass.class
      -- configs
         -- myConfig.xml

Mi ruta absoluta a la configuración actualmente se ve así:

C: \ Desarrollo \ Java \ ProjectName \ WEB-INF \ configuraciones \ myConfig.xml

Estoy usando JAXB para la unión, y se espera un FileInputStream. El FileInputStream tiene que ser una corriente para el archivo de configuración XML. Sin embargo, no puedo encontrar la manera de obtener el FileInputStream para mi config, y seguir recibiendo un FileNotFoundException.

Quiero que esta configuración se va a cargar de una manera tal que una persona no tiene que codificar la ruta a la configuración porque pienso en la liberación de proyecto de código abierto. Veo un montón de ejemplos en los que alguien Simplemente escribe la ruta absoluta completa, pero necesito que sea algo más flexible "como" esto:

new FileInputStream ( "/ WEB-INF / configs / myConfig.xml");

Gracias!

¿Fue útil?

Solución

Me gustaría recomendar que poner myConfig.xml en el directorio WEB-INF / classes lugar y lo carga a través del cargador de clases, ya que está en la ruta de clase. Llamando getResourceAsStream () en el contexto de servlet devolverá un InputStream que puede utilizar. Es relativa a la raíz de contexto, por lo que puede recoger que la guerra y poner en cualquier lugar -. Su código seguirá funcionando

Otros consejos

Usted puede obtener el flujo de entrada de rutas relativas bajo WEB-INF con bastante facilidad con el método ServletContext.getResourceAsStream() (javadoc aquí noreferrer ) y sus variantes.

Por ejemplo, en el código selvlet usted puede hacer esto:

getServletContext().getResourceAsStream("/WEB-INF/configs/myConfig.xml") // your file
getServletContext().getResource("/WEB-INF") // URL to WEB-INF dir
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top