请问如何将D盘下的test.txt文件解析出来,生成{Name01=Value1;Name02=Value2;Name03=Value3;Name04=Value4;Name05=Value5;Name06=Value6;}目前我知道如何拆分字符串,但是无法正确存入Map中,总是有null值,不知道什么原因?

解决方案 »

  1.   

    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不在同一列,所以读出来赋值的时候要特别注意;