我在java中有一个Web应用程序,在servlet中我需要从xml文件加载属性。
代码是
XMLReader reader = XMLReaderFactory.createXMLReader();
...
FileInputStream fis = new FileInputStream("myconf.xml");
reader.parse(new InputSource(fis));
我的问题是:myconf.xml文件放在war文件中应该放在哪里,以便servlet可以找到它?
由于
答案 0 :(得分:5)
不要将FileInputStream
与相对路径一起使用。您将依赖于当前工作目录,您无法完全控制Java代码。而是将文件放在类路径中并使用ClassLoader#getResourceAsStream()
。
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("/myconf.xml");
此示例期望文件位于类路径的根目录中。从IDE角度来看,这可以是src
文件夹的根目录或/WEB-INF/classes
文件夹的根目录。您甚至可以将其放在外部的其他位置,并将其(绝对!)路径添加到服务器配置中某处的运行时类路径中。