我想从名为jdbc.properties的属性文件中读取一行。它位于src\main\webapp\WEB-INF\db\jdbc.properties
。我应该使用什么路径?
这是我的方法:
Properties prop = new Properties();
try {
// load a properties file
prop.load(new FileInputStream("jdbc.properties"));
System.out.println(prop.getProperty("password"));
} catch (IOException ex) {
ex.printStackTrace();
}
答案 0 :(得分:5)
如果您将属性文件移动到src/main/resources
,假设您的项目由maven管理,那么您可以通过执行
Properties prop = new Properties();
try {
// load a properties file
prop.load(YourClass.class.getResourceAsStream("/jdbc.properties")); // note the leading /
System.out.println(prop.getProperty("password"));
} catch (IOException ex) {
ex.printStackTrace();
}
其中YourClass
是此代码所在的类。
Maven将已编译类的所有资源和src/main/resources
中的所有资源放在WEB-INF/classes
中,只有您的应用程序才能访问它们。
如果您将文件放在src/main/resources/someFolder
中,则需要从
prop.load(YourClass.class.getResourceAsStream("/someFolder/jdbcProperties"));
您提供给上述方法的路径是相对于您所在类的包,除非您指定一个前导正斜杠,在这种情况下它将相对于类路径的根,即{{1文件夹。
答案 1 :(得分:2)
您需要指定FileInputStream
的绝对路径。您可以致电servletContext.getRealPath("/WEB-INF/db/jdbc.properties")
如果您没有servletContext
可用(通过.getServletContext()
),那么您应该将它(或应用程序根目录的绝对路径)传递给上面的代码。
答案 2 :(得分:0)
是否为TOMCAT_HOME设置了环境变量,如果没有设置它。
现在你可以使用
<tomcat_home>/webapps/<yourapp>/web-inf/db/jdbc.properties
要获取环境变量的值,请使用以下代码:
Map<String, String> env = System.getenv();
干杯!!