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

时间:2013-10-30 15:29:58

标签: java ini4j

我正在尝试使用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,我希望它是一个数组或列表,任何东西。

3 个答案:

答案 0 :(得分:2)

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

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

  

[ini4j]库引入了MultiMap接口,扩展正常   映射,但允许每个键乘以值。您可以简单地索引值   对于给定的键,类似于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<V> getAll(Object key)

答案 1 :(得分:1)

在代码中使用部分使用mutliple属性:

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

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

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

答案 2 :(得分:-1)

  1. 首先需要setConfig,然后加载文件。
  2. 您需要使用List来处理多个相同的值。
  3. 这里的例子是:

    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<Section> sectionList = ini.getAll(sectionName);  // use List
        for (Section section : sectionList) {
            for (String optionName : section.keySet()) {
                List<String> 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