我遇到以下代码的问题
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
第一个配置文件包含样本日志,第二个配置文件包含要提取的部分的名称
地图应包含键值对,但它们不包含 并且这些地图都是空的。有人请花点时间来分析这个......真的很重要
答案 0 :(得分:0)
您的代码中存在几个问题:
您可以简单地使用已创建的扫描,为什么要从String创建新扫描程序?
它应该是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);
}