0

次のコードに問題があります

public static void main(String[] args) throws FileNotFoundException, IOException {

    Scanner br = new Scanner(new FileReader("/home/esunmes/NetBeansProjects/random/src/random/something.config"));
    HashMap map = new HashMap();
    String line;
    String temp2;
    while (br.hasNextLine()) {
        line = br.next();
        Scanner scan = new Scanner(new FileReader("/home/esunmes/NetBeansProjects/random/src/random/inifile.config"));
        while (scan.hasNextLine()) {
            temp2 = (String) scan.next();
            if (temp2.equals(line)) {
                Scanner scn = new Scanner(temp2);
                String string;
                while (scn.hasNextLine() && ((string = scn.next()) != "\n")) {
                    String[] temp3 = string.split("//=");
                    if (temp3.length > 1) {
                        String key = temp3[0];
                        String value = temp3[1];
                        map.put(key, value);// TODO code application logic here
                    }
                }
            }
        }
    }
    Set set = map.entrySet();
    Iterator iter = set.iterator();
    while (iter.hasNext()) {
        Map.Entry maps = (Map.Entry) iter.next();
        String key = (String) maps.getKey();
        String value = (String) maps.getValue();
        System.out.println("key:" + key + " value" + value);
    }
}

2 つの構成ファイルは 1.inifile.config です。

 section1
 key1=1
 key2=2

 section2
 key4=4
 key5=5

 section3
 key6=6
 key3=3

 section4
 key7=7

 section5
 key8=8

 section6
 key9=9

 section7
 key10=10

 section8
 key11=11 

2.something.config

 section1
 section2
 section3
 section4
 section8

最初の構成ファイルにはサンプル ログがあり、2 番目の構成ファイルには抽出されるセクションの名前があります。

マップにはキーと値のペアが含まれている必要がありますが、含まれておらず、マップが空になっています。誰かがこれを分析するために時間を割いてもらえますか...それは本当に重要です

4

1 に答える 1

0

コードにはいくつかの問題があります。

  • Scanner scn = new Scanner(temp2);

すでに作成したスキャンを使用するだけで済みますが、なぜ文字列から新しいスキャナーを作成するのでしょうか?

  • string.split("//=")

であるべきでstring.split("=")、 のためにエスケープする"="必要はあり\\ません//

  • hasNext()の後に、 の後にnext()、を使用しないでください。hasNextLine()nextLine()hasNextLine()next()

したがって、コードは

Scanner br = new Scanner(new FileReader("file2"));
HashMap map = new HashMap();
String line;
String temp2;
while (br.hasNextLine()) {
    line = br.nextLine();
    Scanner scan = new Scanner(new FileReader("file1"));
    while (scan.hasNextLine()) {
        temp2 = (String) scan.nextLine();
        if (temp2.equals(line)) {
            //Scanner scn = new Scanner(temp2);
            String string;
            while (scan.hasNext() && ((string = scan.next()) != "\n")) {
                String[] temp3 = string.split("=");
                if (temp3.length > 1) {
                    String key = temp3[0];
                    String value = temp3[1];
                    map.put(key, value);// TODO code application logic
                                        // here
                }
            }
        }
    }
}
Set set = map.entrySet();
Iterator iter = set.iterator();
while (iter.hasNext()) {
    Map.Entry maps = (Map.Entry) iter.next();
    String key = (String) maps.getKey();
    String value = (String) maps.getValue();
    System.out.println("key:" + key + " value" + value);
}
于 2013-06-12T11:13:52.283 に答える