如何读取java属性文件并获取其值?

时间:2013-01-31 19:17:22

标签: java properties

在Ruby中,我有一个 sample.yml 文件,如下所示,

1_Group1:
   path:asdf
   filename:zxcv

2_Group2:
  path:qwer
  filename:poiu
etc etc............

现在我需要 Example.properties 文件Java,它应包含上述数据。

使用Java,我想阅读 Example.properties 文件。

然后需要根据组的数量迭代内容并获得相应的“路径”和“文件名”值。

例如:如果有5个组... Group1,Group2 .... Group5 然后我需要迭代

      for(int i=0; i< noofgroups(5);i++){
            ........................
           String slave =  aaa.getString("path");
            aaa.getString("filename");
        }

像这样我需要获取每个路径和文件名。

现在我有 Example.properties 作为follws,

   path:asdf
   filename:zxcv

它正在工作(我可以阅读并获取值)

但我需要将密钥作为“路径”和“文件名”。所以我需要将它们分组。

3 个答案:

答案 0 :(得分:1)

如果您想使用yaml格式,可以找到yamlbeans

您可以像这样使用它:

YamlReader reader = new YamlReader(new FileReader("sample.yml"));
Map map = (Map)reader.read();
System.out.println(map.get("1_Group1"));

答案 1 :(得分:1)

有很多方法可以解决这个问题;最自然的可能是使用自然分层格式,如YAML,JSON或XML。

另一种选择是使用Commons Configuration hierarchical configs之类的hierarchical INI style技术之一。

如果你想使用“纯”属性文件,我建议你只需阅读你的属性,在句点上拆分属性名称,然后存储到地图或类中,这样就可以了:

1_Group1.path=asdf
1_Group1.filename:zxcv

2_Group2.path=qwer
2_Group2.filename=poiu

答案 2 :(得分:1)

您可以通过以下方式使用java.utils.Properties

public static void loadPropertiesAndParse() {
    Properties props = new Properties();
    String propsFilename = "path_to_props_file";
    FileInputStream in = new FileInputStream(propsFilename);
    props.load(in);
    Enumeration en = props.keys();
    while (en.hasMoreElements()) {
        String tmpValue = (String) en.nextElement();
        String path = tmpValue.substring(0, tmpValue.lastIndexOf(File.separator)); // Get the path
        String filename = tmpValue.substring(tmpValue.lastIndexOf(File.separator) + 1, tmpValue.length()); // Get the filename
    }
}

您的properties文件将如下所示:

key_1=path_with_file_1
key_2=path_with_file_2