2

Apache commons 構成を使用して ini ファイルを読み取るのに問題があります。何か不足している場合に備えて、インポートを添付しました。以下は、stackoverflow で見つけた例です。私が見つけることができる限り、他に見るべき例はありません。問題はiniObj. Eclipse を使用すると、赤で強調表示されます。

変数を初期化し、new "HierarchicalINIConfiguration(iniFile);怒って try/catch または throws を追加したい場合...これは問題ないはずです...しかし、try/catch または throws は怒って、「ConfigurationException 型の例外はスローできません」と言う; 例外タイプは、Throwable のサブクラスでなければなりません。"

それから私はこの質問に行きました。commons lang 3.1 を追加しました。コモンズ構成 1.9、コモンズ コレクション 3.2.1 があります。commons logging 1.1.1 も同様です。Commons config 1.8およびlang 2.6でもこれを試しました。今、新しいエラー「Exception in thread "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");
        }
    }
}

スタック オーバーフローの元のコード:

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");
            }
        }
4

3 に答える 3

1

すでにHierarchicalINIConfiguration(「メイン」の2行目)を次のように初期化しているため:

   HierarchicalINIConfiguration iniConfObj = new HierarchicalINIConfiguration(iniFile);

HierarchicalINIConfiguration iniObj = null;コードから (約 5 行下)を削除して変更したいと考えています。

  SubnodeConfiguration sObj = iniObj.getSection(sectionName); 

に (iniConfObjの代わりに使用iniObj)

   SubnodeConfiguration sObj = iniConfObj.getSection(sectionName); 
于 2012-10-17T14:59:37.483 に答える
1

これは有望に見えませんか?

HierarchicalINIConfiguration iniObj = null;
SubnodeConfiguration sObj = iniObj.getSection(sectionName); 

これは28行目ですか?

于 2012-10-17T14:50:57.547 に答える
0

JINIFile を試すことができます。Delphi の TIniFile を Java 用に翻訳したものです。すべての INI ファイル機能を完全にサポートします。

https://github.com/SubZane/JIniFile

于 2013-01-11T14:22:57.717 に答える