【问题标题】:Parser of ini-file with duplicate names for Java用于 Java 的具有重复名称的 ini 文件的解析器
【发布时间】:2011-07-14 12:39:16
【问题描述】:

有如下格式的配置文件:

[section1]
key1=value1
key2=value2

[section2]
key3=value3
key4=value4

...

[section2]
key3=value5
key4=value6

问题是我们不应该合并属于同名部分的键。

Ini4j 将它们合并为一个部分:[[section2], key3, key4]

是否有一个 java-parser,它返回未设置的部分列表?

【问题讨论】:

    标签: java parsing ini


    【解决方案1】:
    ini.getConfig().setMultiSection(true);
    

    【讨论】:

    • 不工作。 ini = new Wini(); ini.getConfig().setMultiSection(true); ini.load(new File(configName)); System.out.println("Number of sections: "+ini.size()+"\n"); 输出 2,必须更大。
    • 是的,它是 2。但是每个元素都是一个包含 list 部分的数组。尝试做ini.getAll("section2").size()
    【解决方案2】:

    只是上面的一个例子,每个部分有多个部分和多个值:

    Config.ini

    [section2]
    key3=value1
    key4=value2
    key5=value3.1
    key5=value3.2
    
    [section2]
    key3=value4
    key4=value5
    key5=value6.1
    key5=value6.2
    

    代码:

    import java.io.File;
    import java.io.IOException;
    import java.util.List;
    
    import org.ini4j.Ini;
    import org.ini4j.InvalidFileFormatException;
    import org.ini4j.Profile.Section;
    
    public class TestConfig {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            try {
                File file = new File("config.ini");
                Ini ini = new Ini();
                ini.getConfig().setMultiSection(true);
                ini.load(file);
    
    
                List<Section> sections = ini.getAll("section2");
                for(Section section : sections)
                {
                    System.out.println("key3: " +  section.get("key3"));
                    System.out.println("key4: " +  section.get("key4"));
                    List<String> values = section.getAll("key5");
                    for(String val : values)
                    {
                        System.out.println("key5: " + val);
                    }
                    System.out.println("***********************************");
                }
    
    
            } catch (InvalidFileFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
    }
    

    输出:

    key3: value1
    key4: value2
    key5: value3.1
    key5: value3.2
    ***********************************
    key3: value4
    key4: value5
    key5: value6.1
    key5: value6.2
    ***********************************
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 2014-08-12
      相关资源
      最近更新 更多