我知道有两种方法可以读取.properties文件:
1- System.getProperties.load(.properties文件的输入流);
2-创建一个新的Properties对象,然后调用load(.streamperties文件的Inputstream);
在第一种方法中,我们是否要在System对象中存储.properties文件的值。它是否在利用更多资源?
想知道哪种方式最好,或者除了上述两种方式之外,如果还有其他最佳方法,请告诉我。
感谢。
答案 0 :(得分:9)
取决于属性文件代表什么。如果它表示需要覆盖/提供某些默认系统属性的系统属性,那么请转到第一种方法。但如果它代表特定于应用程序的属性(通常情况下通常是这种情况),那么请选择第二种方法。
答案 1 :(得分:0)
IMO,将应用程序属性加载到System属性对象中是一个不错的想法。如果有人将伪造的属性值放入您正在加载的文件中,这可能会导致各种模糊的失败。例如,将“java.home”设置为伪造值将导致JavaMail失败,并且设置其中一个“* .separator”属性可能会导致各种异常行为。
如果您的应用程序确实需要“覆盖”系统属性,那么最好这样做:
Properties props = new Properties(System.getProperties());
props.load(someInputStream);
如果没有,则只需按如下方式加载属性:
Properties props = new Properties();
props.load(someInputStream);
如果由于某种原因你需要覆盖系统属性对象本身的值,那么你应该更仔细/更有选择地做。
答案 2 :(得分:0)
我们将使用URl ...
读取属性文件 Properties props = new Properties();
try
{
java.net.URL url = Thread.currentThread().getContextClassLoader().getResource(fileName);
java.net.URL url2 = ClassLoader.getSystemResource(fileName);
props.load(url.openStream());
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return props;