2017-03-01 100 views
-1

我有有代码现在如何读取属性从不同的位置,文件中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(); 
    } 

,如果我跑sourcehandler.java类的代码,它示出了在线路零指示字例外,prop.load(in);

堆栈跟踪:

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

+0

您可以加入的确切路径'字符串'你在用吗? – Berger

+0

是Berger,这是从主要方法传递的确切路径“C:\ config.properties”,我也可以通过sop打印。 – Jeelan

+0

向我们展示如何从'main'方法传递它,这是至关重要的。 –

回答

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

(并为那些谁不知道为什么我没有收出的重复......我不能更多,因为我已经接近请求的另一个原因)

+0

我有该文件的路径C:\\ config.properties,现在在线,prop.load(in);它会抛出java.lang.NullPointerException异常 – Jeelan

+0

请看现在的问题是增强的... – Jeelan

+0

谢谢鬼猫,它是我愚蠢的错误.. – Jeelan