相关疑难解决方法(0)

用Java读取属性文件

我有以下代码尝试读取属性文件:

Properties prop = new Properties();
ClassLoader loader = Thread.currentThread().getContextClassLoader();           
InputStream stream = loader.getResourceAsStream("myProp.properties");
prop.load(stream);
Run Code Online (Sandbox Code Playgroud)

我在最后一行得到一个例外.特别:

Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at Assignment1.BaseStation.readPropertyFile(BaseStation.java:46)
at Assignment1.BaseStation.main(BaseStation.java:87)
Run Code Online (Sandbox Code Playgroud)

谢谢,尼科斯

java properties

101
推荐指数
8
解决办法
34万
查看次数

为什么不使用ResourceBundle而不是Properties?

这是一个简单的问题,我找不到结论性答案.

我可以从config.properties文件加载字符串属性(例如:对预准备语句的查询).假设我想要连接的数据库连接.

如果我想从文件中获取此信息,我可以在类中执行以下操作:

    private static final ResourceBundle BUNDLE = ResourceBundle.getBundle("scheduler");
    private static final String DRIVER  = BUNDLE.getString("bd.driver");
    private static final String CONNECTIONURL  =BUNDLE.getString("bd.url");
....
Run Code Online (Sandbox Code Playgroud)

但相反,我已经看到许多人建议使用而不是属性,然后我将不得不做同样的事情(如果我想保持类静态,没有一个合适的构造函数):

static {
        prop = new Properties(); 
        try {                prop.load(ReportsDB.class.getClassLoader().getResourceAsStream("config.properties"));
        } catch (IOException ex) {
            Logger.getLogger(ReportsDB.class.getName()).log(Level.SEVERE, null, ex);
            throw new RuntimeException(ex);
        }
    }

    private static final String DRIVER  = prop.getProperty("bd.driver");
    private static final String CONNECTIONURL  = prop.getProperty("bd.url");
Run Code Online (Sandbox Code Playgroud)

那么,为什么我不应该使用ResourceBundle而不是Properties当第二个更详细?

java

5
推荐指数
1
解决办法
6344
查看次数

标签 统计

java ×2

properties ×1