Cómo cargar un archivo de configuración XML con FileInputStream, pero conseguir un FileNotFoundException
-
18-09-2019 - |
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!
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