我决定使用ini文件为我的Java应用程序存储简单的键值对配置。
我在谷歌上搜索了stackoverflow,发现强烈推荐使用ini4j来解析和解释Java中的ini文件。我花了一些时间阅读ini4j站点上的教程;但是,我不确定如何在ini文件中获取设置的所有键值。
例如,如果我有一个这样的ini文件:
[ food ]
name=steak
type=american
price=20.00
[ school ]
dept=cse
year=2
major=computer_science并且假设我事先不知道密钥的名称。如何获得键的列表,以便最终可以根据键检索值?例如,如果我得到食物的键列表,我会得到一个包含'name‘、'type’和'price‘的数组或某种类型的数据结构。
谁能给我举个例子,你可以打开一个ini文件,解析或解释它,让一个应用程序知道ini文件的所有结构和值,并获得键和值的列表?
发布于 2009-10-22 02:48:02
这一点不能保证。在5分钟内就完成了。但它读取您提供的ini,而不进一步了解ini本身(除了知道它由许多部分组成,每个部分都有许多选项)。
我想剩下的你得自己弄清楚了。
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 Samples和ini4j Tutorials。这通常是一个文档不是很好的库。
发布于 2011-04-28 17:01:03
我在教程中找不到任何东西,所以我浏览了源代码,直到我找到了entrySet方法。这样你就可以这样做了:
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文件重新打印到控制台。您的示例文件将产生以下输出:(顺序可能会有所不同)
[food]
name = steak
type = american
price = 20.00
[school]
dept = cse
year = 2
major = computer_science发布于 2014-06-28 00:23:44
感兴趣的方法是get()和keySet()
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)
}https://stackoverflow.com/questions/1602270
复制相似问题