我是Java新手,请原谅我缺乏知识。我正在尝试在我的网络应用程序中使用属性文件。在研究时我发现这篇文章http://commons.apache.org/configuration/howto_properties.html看起来非常简单,所以我试图实现这一点。我试图按如下方式实施:
Configuration config = new PropertiesConfiguration("stream.bundle.config");
我已经尝试过stream.bundle.config,bundle.config和许多其他组合,但每次我都会收到一个说明无法找到配置源的异常。该文件位于src下名为bundle的文件夹中。我的问题是a)文件应该在哪里? b)我应该如何参考它。我为自己缺乏知识而道歉。提前致谢。
更新:
我也试过
FileInputStream in;
Properties p = new Properties();
try{
in = new FileInputStream("config.properties");
p.load(in);
}
catch(Exception e){
System.out.println("Error: " + e);
}
我得到java.io.FileNotFoundException:config.properties(系统找不到指定的文件)或java.io.FileNotFoundException:config(系统找不到指定的文件)
答案 0 :(得分:2)
关于a)文件应该在哪里:
如果你考虑使用Java的Properties,你必须以某种方式获得一个InputStream。如果要从包中的类加载属性,则必须使用:
getClass().getResourceAsStream("resource.properties");
如果该类在另一个包中:
getClass().getResourceAsStream("some/pkg/resource.properties");
您可以尝试通过ClassLoader加载属性:
ClassLoader.getResourceAsStream ("some/pkg/resource.properties");
如果您有ServletContext,可以使用:
ServletContext.getResourceAsStream(..)
编辑:您应该使用全名(文件名+扩展名)引用您的文件。所以你的第一个 尝试应该是:
Configuration config = new PropertiesConfiguration("config.properties");
答案 1 :(得分:1)
试试这个:
Properties properties = new Properties();
try
{
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("xyz.properties"));
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}