如何在Java中解析带有节的ini文件?

6
这里是一个示例ini文件:
[link#1]
alias=My Link 1
link=https://www.yandex.ru/

[link#2]
alias=My Link 2
link=https://mail.ru/

[link#3]
alias=My Link 3
link=http://point.md/ru/

我知道如何解析它,但是键都是相同的,我需要将其放入例如ArrayList<LinkObject>中。有人知道一个好的解决方案吗?或者我们应该以不同的格式来格式化.ini文件?


你使用解析库吗? - Mohammad Fatemi
我甚至都没有开始解析。我看到了其他帖子,比如这一个:https://dev59.com/AXVC5IYBdhLWcg3ww0Lr,但是我找不到任何可以帮助我的库。 - Filip Luchianenco
你是在寻找一个库,还是只是想读取这个文件? - lase
Apache Commons有一个INI解析器;从那里开始。 - Dave Newton
我正在寻找一个库。我认为自己解析它没有意义。 @DaveNewton 谢谢,我会看一下的。 - Filip Luchianenco
https://commons.apache.org/proper/commons-configuration/javadocs/v1.10/apidocs/index.html?org/apache/commons/configuration/HierarchicalINIConfiguration.html - DwB
1个回答

8

我可以为你推荐 ini4j。这是一个小而非常易于使用的库。只需下载文件或将依赖项包含到你的maven配置中:

<dependency>
   <groupId>org.ini4j</groupId>
   <artifactId>ini4j</artifactId>
   <version>0.5.4</version>
</dependency>

现在只需执行以下操作即可加载 .ini 文件:
Wini ini = new Wini(new File("your file path"));

使用示例:

//output names of all sections    
Collection<Profile.Section> list = ini.values();
for(Profile.Section section : list){
    System.out.println(section.getName());
}

//fetch and output option value
String value = ini.fetch("link#1", "alias");
System.out.println(value);

//output keys of all options of one section
Profile.Section section = ini.get("link#1");
for(String key : section.keySet()){
   System.out.println(key);
}

感谢您的详细解释。 - Filip Luchianenco
1
谢谢你的示例。我花了半个小时来读取一个XML文件,但我仍然不知道如何处理节点对象。但是多亏了你,我立刻就明白了。 - user10123001

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接