我无法使用Apache commons配置来读取ini文件。我附上了进口,因为我遗失了一些东西。下面是我在stackoverflow上找到的一个例子,据我所知,没有其他例子可供查看。问题是iniObj
。使用Eclipse时,它以红色突出显示。
如果我初始化变量,new "HierarchicalINIConfiguration(iniFile);
生气并且想要添加try / catch或throws ......这应该没有问题......但是然后try / catch或throws生气并说“不能抛出ConfigurationException类型的异常;异常类型必须是Throwable的子类。“
然后我带我去了this question。我添加了公共语言3.1。我有commons config 1.9,commons集合3.2.1。公共记录1.1.1也是如此。我也尝试过commons config 1.8和lang 2.6。现在我得到一个新的错误“线程中的异常”main“java.lang.NullPointerException at com.toolbox.dev.ReadIni.main(ReadIni.java:28)”在我做的调整后你可以看到下面的新代码并解决错误。
我的代码:
import java.util.Iterator;
import java.util.Set;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalINIConfiguration;
import org.apache.commons.configuration.SubnodeConfiguration;
public static void main(String[] args) throws ConfigurationException {
String iniFile = "file.ini";
HierarchicalINIConfiguration iniConfObj = new HierarchicalINIConfiguration(iniFile);
// Get Section names in ini file
Set setOfSections = iniConfObj.getSections();
Iterator sectionNames = setOfSections.iterator();
while(sectionNames.hasNext()) {
String sectionName = sectionNames.next().toString();
HierarchicalINIConfiguration iniObj = null;
SubnodeConfiguration sObj = iniObj.getSection(sectionName);
Iterator it1 = sObj.getKeys();
while (it1.hasNext()) {
// Get element
Object key = it1.next();
System.out.print("Key " + key.toString() + " Value " +
sObj.getString(key.toString()) + "\n");
}
}
}
Stack Overflow的原始代码:
import java.util.Iterator;
import java.util.Set;
import org.apache.commons.configuration.HierarchicalINIConfiguration;
import org.apache.commons.configuration.SubnodeConfiguration;
public class ReadIni {
public static void main(String[] args) {
String iniFile = "";
HierarchicalINIConfiguration iniConfObj = new HierarchicalINIConfiguration(iniFile);
// Get Section names in ini file
Set setOfSections = iniConfObj.getSections();
Iterator sectionNames = setOfSections.iterator();
while(sectionNames.hasNext()) {
String sectionName = sectionNames.next().toString();
SubnodeConfiguration sObj = iniObj.getSection(sectionName);
Iterator it1 = sObj.getKeys();
while (it1.hasNext()) {
// Get element
Object key = it1.next();
System.out.print("Key " + key.toString() + " Value " +
sObj.getString(key.toString()) + "\n");
}
}
答案 0 :(得分:1)
这看起来不太有希望?
HierarchicalINIConfiguration iniObj = null;
SubnodeConfiguration sObj = iniObj.getSection(sectionName);
这条线是28吗?
答案 1 :(得分:1)
由于您已将HierarchicalINIConfiguration
(“main”中的第二行)初始化为:
HierarchicalINIConfiguration iniConfObj = new HierarchicalINIConfiguration(iniFile);
我相信您要从代码中删除HierarchicalINIConfiguration iniObj = null;
(大约5行)并更改
SubnodeConfiguration sObj = iniObj.getSection(sectionName);
to(使用iniConfObj
代替iniObj
)
SubnodeConfiguration sObj = iniConfObj.getSection(sectionName);
答案 2 :(得分:0)
你可以试试JINIFile。是来自Delphi的TIniFile的翻译,但是对于java。它完全支持所有INI文件功能