将值从属性文件读取到 Map<PropertyName、ListOfValues>?



我有以下属性文件

  • 字符集。MyVal1 = a, b, c, d, e
  • 字符集。MyVal2 = z d e
  • 字符集。MyVal3 = a、b

并且需要构造一个map,其中key是属性文件的键,value a list Strings是属性值,例如MyMap(String, list)

使用

映射的示例
  • Key = MyCat。MyVal1 value List a,b,c,d,e
  • Key = MyCat。MyVal2值列表z,d,e

现在我知道您可以使用Spring从属性文件中读取特定值到列表

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

最终,我能弄清楚如何做到这一点的唯一方法是编写一个自定义类来逐行读取所有属性并获取属性的值并将其拆分并基于此创建一个列表并构造一个映射

只是想问是否有更简单的方法来做到这一点?

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

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

要将Java对象以Yaml格式写入文件,您所要做的就是

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

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

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

您可以使用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);
  }

最新更新