如何从JAVA中的不同位置读取属性文件

时间:2017-03-01 13:33:48

标签: java

我有sourcehandler.java类,其代码为

public class SourceHandler {
  String PrpPath = null;
  Properties prop = null;

 public Properties loadConfigProperties() {

try {

    System.out.println("Propertiess " +PrpPath );
    InputStream in =new FileInputStream(new File(PrpPath ));
    prop.load(in);

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
return prop;
}

和另一个班级的主要方法,

    public static void main(String[] args) throws ParserConfigurationException,
                                              Exception {
    try {

        SourceHandler conf = new SourceHandler();

        conf.setProperties("C:/config.properties");

        Properties p = conf.loadConfigProperties();

        System.out.println("Done");

    } catch (DOMException dome) {
        // TODO: Add catch code
        dome.printStackTrace();
     }

现在,如果我运行代码,它会在行prop.load(in);

显示空指针异常

堆栈跟踪:

  

显示java.lang.NullPointerException       在DecryptEncryptSource.SourceHandler.loadConfigProperties(SourceHandler.java:98)       在DecryptEncryptSource.SourceHandler.updateCofigDestn(SourceHandler.java:151)       在DecryptEncryptSource.MainClass.main(MainClass.java:27)

1 个答案:

答案 0 :(得分:0)

首先,

InputStream in =new FileInputStream(new File(Properties));

应该更好地阅读

InputStream in =new FileInputStream(new File(propertyFileName));

避免任何歧义;然后:

  • 您确定确实存在名为C:\config.properties
  • 的文件
  • 可能你需要逃避:C:\\config.properties;或者你试试C:/config.properties

关于更新;你有这条线:

Properties prop = null;

并进一步向下:

prop.load(in);

你对NPE感到惊讶吗?真?提示:使用文件路径查看代码并创建该Property对象;而不只是在空对象上调用方法。

真正的答案是一遍又一遍地阅读here

(对于那些想知道为什么我没有复制的人......我再也不能了,因为我已经在另一个原因上已经请求了)