如何载荷配置xml文件FileInputStream,但得到一个FileNotFoundException
-
18-09-2019 - |
题
我建立的路径,在日食这样的:
ProjectName
-- WEB-INF
-- classes
-- myClass.class
-- configs
-- myConfig.xml
我绝对路径的配置目前看起来像这样:
C:\Development\Java\ProjectName\WEB-INF\configs\myConfig.xml
我使用的是修订的结合,并且它期待一个FileInputStream.该FileInputStream需要一流的XML配置文件。然而,我不能找出如何获得FileInputStream我config,和我保持一FileNotFoundException.
我想这配置可以装在这样一种方式,有人没有硬编码的路径的配置,因为我计划在释放项目的开放源。我看到很多例子,某人只是硬编码完全绝对的道路,但是我需要的东西更加灵活的"喜欢"这样的:
新FileInputStream("/WEB-INF/configs/myConfig.xml");
谢谢!
解决方案
我建议把该myConfig.xml在WEB-INF / classes目录代替,并通过类加载器加载它,因为它是在类路径中。调用的getResourceAsStream()在servlet上下文将返回,您可以使用一个InputStream。这是相对于上下文根,这样你就可以拿起WAR并把它放在任何地方 - 你的代码仍然可以工作。
其他提示
你可以得到输入流的相对路径在网络INF相当轻松 ServletContext.getResourceAsStream()
方法(如果是的话,为什么不试 在这里,)及其变体。
例如,在你的selvlet码你可以这样做:
getServletContext().getResourceAsStream("/WEB-INF/configs/myConfig.xml") // your file
getServletContext().getResource("/WEB-INF") // URL to WEB-INF dir
不隶属于 StackOverflow