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

这两个配置文件是 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

第一个配置文件有示例日志,第二个有要提取的部分的名称

地图应该包含键值对,但它们不包含,地图出来是空的。有人可以花点时间分析一下……它真的很重要

4

1 回答 1

0

您的代码中有几个问题:

  • 扫描仪 scn = new Scanner(temp2);

您可以简单地使用您已经创建的扫描仪,为什么要从字符串创建新的扫描仪?

  • string.split("//=")

应该是string.split("="),你不需要逃跑"=",即使需要逃跑,也不\\应该//

  • hasNext() should be followed with next(), hasNextLine() should be followed with nextLine(), you should not use hasNextLine() then use next().

So the code should be

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 回答