首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ini4j -如何获取设置中的所有键名称?

ini4j -如何获取设置中的所有键名称?
EN

Stack Overflow用户
提问于 2009-10-22 01:19:32
回答 4查看 16.5K关注 0票数 11

我决定使用ini文件为我的Java应用程序存储简单的键值对配置。

我在谷歌上搜索了stackoverflow,发现强烈推荐使用ini4j来解析和解释Java中的ini文件。我花了一些时间阅读ini4j站点上的教程;但是,我不确定如何在ini文件中获取设置的所有键值。

例如,如果我有一个这样的ini文件:

代码语言:javascript
复制
[ food ]
name=steak
type=american
price=20.00

[ school ]
dept=cse
year=2
major=computer_science

并且假设我事先不知道密钥的名称。如何获得键的列表,以便最终可以根据键检索值?例如,如果我得到食物的键列表,我会得到一个包含'name‘、'type’和'price‘的数组或某种类型的数据结构。

谁能给我举个例子,你可以打开一个ini文件,解析或解释它,让一个应用程序知道ini文件的所有结构和值,并获得键和值的列表?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-22 02:48:02

这一点不能保证。在5分钟内就完成了。但它读取您提供的ini,而不进一步了解ini本身(除了知道它由许多部分组成,每个部分都有许多选项)。

我想剩下的你得自己弄清楚了。

代码语言:javascript
复制
import org.ini4j.Ini;
import org.ini4j.Profile.Section;
import java.io.FileReader;

public class Test {
    public static void main(String[] args) throws Exception {
        Ini ini = new Ini(new FileReader("test.ini"));
        System.out.println("Number of sections: "+ini.size()+"\n");
        for (String sectionName: ini.keySet()) {
            System.out.println("["+sectionName+"]");
            Section section = ini.get(sectionName);
            for (String optionKey: section.keySet()) {
                System.out.println("\t"+optionKey+"="+section.get(optionKey));
            }
        }
    }
}

也可以查看ini4j Samplesini4j Tutorials。这通常是一个文档不是很好的库。

票数 14
EN

Stack Overflow用户

发布于 2011-04-28 17:01:03

我在教程中找不到任何东西,所以我浏览了源代码,直到我找到了entrySet方法。这样你就可以这样做了:

代码语言:javascript
复制
Wini ini = new Wini(new File(...));
Set<Entry<String, Section>> sections = ini.entrySet(); /* !!! */

for (Entry<String, Section> e : sections) {
    Section section = e.getValue();
    System.out.println("[" + section.getName() + "]");

    Set<Entry<String, String>> values = section.entrySet(); /* !!! */
    for (Entry<String, String> e2 : values) {
        System.out.println(e2.getKey() + " = " + e2.getValue());
    }
}

这段代码实质上是将.ini文件重新打印到控制台。您的示例文件将产生以下输出:(顺序可能会有所不同)

代码语言:javascript
复制
[food]
name = steak
type = american
price = 20.00
[school]
dept = cse
year = 2
major = computer_science
票数 4
EN

Stack Overflow用户

发布于 2014-06-28 00:23:44

感兴趣的方法是get()和keySet()

代码语言:javascript
复制
Wini myIni = new Wini (new File ("test.ini"));

// list section names
for (String sName : myIni.keySet()) {
    System.out.println(sName);
}

// check for a section, section name is case sensitive
boolean haveFoodParameters = myIni.keySet().contains("food");

// list name value pairs within a specific section
for (String name : myIni.get("food").keySet() {
    System.out.println (name + " = " + myIni.get("food", name)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1602270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档