67,512
社区成员
发帖
与我相关
我的任务
分享
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream(new File("D:\\test.txt"));
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bufferedReader = new BufferedReader(isr);
String line;
System.out.println("文件内容:");
String [] keys = null;
String [] values = null;
while ((line = bufferedReader.readLine()) != null) {
String [] arrStr = line.split("\\s+");
if (line.startsWith("N")) {
keys = new String[arrStr.length];
}
if (line.startsWith("V")) {
values = new String[arrStr.length];
}
// values = new String[arrStr.length];
for (int i = 0;i < arrStr.length;i++) {
if (line.startsWith("N")) {
keys[i] = arrStr[i];
} else if (line.startsWith("V")) {
values[i] = arrStr[i];
}
}
}
// 正常情况下,长度应该是相等的
Map map = new HashMap();
if (keys.length == values.length) {
for (int i = 0; i < keys.length; i++) {
map.put(keys[i],values[i]);
}
}
System.out.println(Arrays.toString(keys));
System.out.println(Arrays.toString(values));
System.out.println(map);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
大概改成这样就好了,你代码问题一:每次都在while中给keys 和 values 重新new,导致会出现null的情况;
因为是name 和 value不在同一列,所以读出来赋值的时候要特别注意;