求助!用Java读取dat文件并处理数据,输出!

a.dat文件:
id,money
k001,5
k002,21
k003,30
k004,40
k002,20

b.dat文件:
id,money
k002,30
k005,49
k007,50

用java读取以上两个dat文件,统计相同id名下的money总和,并输出c.dat文件。

IO流,按行读取,字符串切割,map存储id和money,map中已经存在id则进行money累加,2个文件读取完成,输出map值到c.dat

把a.txt b.txt,c.txt 分别改为.dat就可以了

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Lianxi
{

static Map map=new HashMap();
public static void main(String[] args) throws IOException {

String line = null;
String a=null,a1 =null;
String b=null,b1 =null;

    BufferedReader in = new BufferedReader(new FileReader("F:\\a.txt"));
    while((line = in.readLine())!=null)
    {
        a=line.split(",")[0];
        b=line.split(",")[1];
       map.put(a, b);

    }

    BufferedReader in1 = new BufferedReader(new FileReader("F:\\b.txt"));
    while((line=in1.readLine())!=null)
    {      
            a1=line.split(",")[0];
            b1=line.split(",")[1];  
          if(a1.equals("id"))
          {       
          }
          else
          if(map.get(a1)!=null)
          {   b= (String) map.get(a1);
              map.remove(a1);
              int temp=Integer.parseInt(b1)+Integer.parseInt(b);
              map.put(a1, temp);  
          }
          else 
          {
              map.put(a1, b1);
          }
    }


    StringBuffer str = new StringBuffer();
    FileWriter fw = new FileWriter("F:\\c.txt", true);
    Set set = map.entrySet();
    Iterator iter = set.iterator();
    while(iter.hasNext()){
        Map.Entry entry = (Map.Entry)iter.next(); 
        str.append(entry.getKey()+" , "+entry.getValue()+"\r\n");
    }
    fw.write(str.toString());
    fw.close();
}       

}

发现写错了、、、
下面是正确的

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Lianxi
{

static Map map=new HashMap();
public static void main(String[] args) throws IOException {

String line = null;
String a=null,a1 =null;
String b=null,b1 =null;

    BufferedReader in = new BufferedReader(new FileReader("F:\\a.txt"));
    while((line = in.readLine())!=null)
    {
        a=line.split(",")[0];
        b=line.split(",")[1];

       if(map.get(a)!=null)
       {   b1= (String) map.get(a);
          map.remove(a);
          int temp=Integer.parseInt(b)+Integer.parseInt(b1);
          String temp1=String.valueOf(temp);
           map.put(a, temp1);  
       }
       else
       {
           map.put(a, b);   
       }
    }

    BufferedReader in1 = new BufferedReader(new FileReader("F:\\b.txt"));
    while((line=in1.readLine())!=null)
    {      
            a1=line.split(",")[0];
            b1=line.split(",")[1];  
          if(a1.equals("id"))
          {       
          }
          else
          if(map.get(a1)!=null)
          {   b= (String) map.get(a1);
              map.remove(a1);
              int temp=Integer.parseInt(b1)+Integer.parseInt(b);
             // String temp1=String.valueOf(temp);
              map.put(a1, temp);  
          }
          else 
          {
              map.put(a1, b1);
          }
    }


    StringBuffer str = new StringBuffer();
    FileWriter fw = new FileWriter("F:\\c.txt", true);
    Set set = map.entrySet();
    Iterator iter = set.iterator();
    while(iter.hasNext()){
        Map.Entry entry = (Map.Entry)iter.next(); 
        str.append(entry.getKey()+" , "+entry.getValue()+"\r\n");
    }
    fw.write(str.toString());
    fw.close();
}       

}

文件内容少,可以用apache的FileUtils.readLines方法获取所有行集合,用POI写入excel
文件内容大,用IO流,按行读取,用POI写入excel