Java ini4j – 从.ini文件中读取多个选项

我正在尝试使用ini4j读取多个值 ,文档说应该可以使用Options类。

这是我的示例.ini文件 (./dwarfs.ini)

[dopey] age = 23 fortuneNumber = 11 fortuneNumber = 33 fortuneNumber = 55 

这是阅读它的代码

 Ini ini = new Ini(); Config conf = new Config(); conf.setMultiOption(true); ini.setConfig(conf); ini.load(new FileReader("./dwarfs.ini")); 

但是fortuneNumber属性在阅读后只有55,我希望它是一个数组或列表,任何东西。

ini4j项目的Web存在包含(以及其他)非常简单的教程 。 其中一个教程解释了如何检索多个值。 当使用返回单个引用的fetch方法时,您如何期望获得列表或数组? 看看API !

在本教程中,有一个部分解释了多个值:

[ini4j]库引入了MultiMap接口,它扩展了普通Map,但允许每个键的乘法值。 您可以简单地为给定键索引值,类似于JavaBeans api中的索引属性。

还有一个例子:

 String n1 = sneezy.get("fortuneNumber", 0); // = 11 String n2 = sneezy.get("fortuneNumber", 1); // = 22 String n3 = sneezy.get("fortuneNumber", 2); // = 33 String n4 = sneezy.get("fortuneNumber", 3); // = 44 

在这个例子中,sneezy是一个Section ,但它也应该与Ini一起使用。

并且只是为了使它完整: Ini也知道方法List getAll(Object key)

在以下代码中使用section处理mutliple属性:

 Ini oINI = new Wini(); Config conf = new Config(); conf.setMultiOption(true); oINI.setConfig(conf); oINI.load(new File("....../myfile.ini")); 

不要在类创建中直接打开INI文件,之前设置选项,否则不会使用这些选项,默认情况下MultiOption设置为“false”。

已经搜索了一下这个解决方案。

  1. 你首先需要setConfig,然后加载文件。
  2. 你需要使用List来处理多个相同的值。

这里的例子:

 Ini ini = new Wini(); Config config = new Config(); config.setMultiOption(true); config.setMultiSection(true); ini.setConfig(config); //set config ini.load(new File(filename)); // load AFTER setConfig for (String sectionName : ini.keySet()) { List
sectionList = ini.getAll(sectionName); // use List for (Section section : sectionList) { for (String optionName : section.keySet()) { List optionList = section.getAll(optionName); for (String optionVaule : optionList) { System.out.printf("%s %s %s\n", sectionName, optionName, optionVaule); } } } }

这里输出:

 dopey age 23 dopey fortuneNumber 11 dopey fortuneNumber 33 dopey fortuneNumber 55 
Interesting Posts