将属性文件中的值读入Map <propertyname,listofvalues =“”>?</propertyname,>

时间:2014-05-15 13:26:21

标签: java spring list map properties

我有以下属性文件

  • MyCat.MyVal1 = A,B,C,d,E
  • MyCat.MyVal2 = Z,d,E
  • MyCat.MyVal3 = A,B

需要构造一个映射,其中key是属性文件的键,值是一个列表字符串是属性值,例如MyMap中(字符串,列表)

带有

的地图的示例
  • Key = MyCat.MyVal1值列出a,b,c,d,e
  • Key = MyCat.MyVal2 value List z,d,e

现在我知道你可以使用Spring将列表中的特定值读入列表

@Component
class MyClass {
@Value("${my.property.name}")
private String[] myValues;
}

最终我能弄清楚如何做到这一点的唯一方法是编写一个自定义类来逐行读取所有属性并获取属性的值并拆分它们并根据它构建一个列表并构造一张地图。

想知道是否有更简单的方法可以做到这一点?

2 个答案:

答案 0 :(得分:0)

我建议更改属性格式并使用一个很棒的库 - Yaml - 这在许多类似的任务中可能很方便。 它看起来像..

  

JYaml可以轻松利用Yaml的灵活性。默认情况下,JYaml将序列转换为java.util.ArrayList,并将映射转换为java.util.HashMap。但是,可以通过标记或类型推断来覆盖此行为,这允许将映射转换为JavaBean,或者将序列转换为数组或不同类型的集合。

     

要以Yaml格式将Java对象写入文件,您只需要

Yaml.dump(object, new File("object.yml"));

相反,将Yaml文件加载到Java land

Object object = Yaml.load(new File("object.yml"));

答案 1 :(得分:0)

您可以使用java.util.Properties类从属性文件中读取值。

因此,您的代码可能看起来类似于

 private Properties loadProperty(String propertiesFilePath)
    throws FileNotFoundException, IOException 
  {
    Properties metaData = new Properties();

    FileInputStream fis = new FileInputStream(new File(propertiesFilePath));
    metaData.load(fis);

    fis.close();
    return (metaData);
  }