从java中的属性文件访问属性的最佳方法

时间:2015-08-17 09:18:05

标签: java properties

我有属性文件app.properties,它有50种不同的属性。 我正在使用

访问我的java类中的那些
Properties prop = new Properties();
prop.load("app.properties");

System.out.prinltn(prop.getProperty("APPNAME"));

实际上,我想摆脱像prop.getProperty("APPNAME")这样的访问属性。在java中有没有最好的方法来访问属性。

我可以在java类中将所有变量声明为静态。

static String appName = prop.getProperty("APPNAME");

还有其他最好的方法吗?

3 个答案:

答案 0 :(得分:3)

我可以建议两种方法: 1.定义一个实用程序方法,它将String作为参数并从属性中返回值。

例如:

public static String GetValue(String key) {
    return properties.getProperty(key);
}

现在你可以在来电者身上使用这个功能了

String value = GetValue("key"); // properties.getProperty("key");
  1. 定义上面的方法,另外创建一个类Called Constants(或适合的东西)。在此将所有密钥定义为静态最终变量。

    公共类常量 {    public static final String KEY =“key”;    public static final String KEY2 =“key2”; }

  2. 现在使用这些变量而不是字符串来调用获取值:

    String value = GetValue(KEY); //GetValue("key");
    

    如果您只选择选项1,那么您的代码将变得更具可读性。但我会推荐第二个选项,它使您的代码可读并且可维护。

    您可以轻松执行以下操作:

    1. 更新媒体资源名称
    2. 无需担心输入密钥等问题。

答案 1 :(得分:0)

您可以使用" resourceBundle"包装为

首先导入resourceBundle API:

import java.util.ResourceBundle;

创建属性文件的实例:

private static ResourceBundle resource = ResourceBundle.getBundle("app");

现在您可以获取该属性的值:

String appName = resource.getString("APPNAME");

答案 2 :(得分:0)

IMO,您使用静态变量来保存值的方法是最好的。以下结构是我在项目中使用相同功能的结构。

package snippet;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

public class Constants {

    public static final String APPNAME;
    public static final String VERSION;
    public static final int DEFAULT_TIMEOUT;

    static {
        Properties p = new Properties();
        try {
            p.load(new FileInputStream("constants.properties"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        APPNAME = p.getProperty("APPNAME");
        VERSION = p.getProperty("VERSION");
        DEFAULT_TIMEOUT = Integer.parseInt(p.getProperty("DEFAULT_TIMEOUT"));
    }
}

当然,有NumberFormatException等检查。