[code = java]
//把生成的mid_txt按照表名分成若干个小文件
File second = new File(path+mid_txt);
BufferedReader bw_2 = new BufferedReader(new FileReader(second));
//第一次循环
line = bw_2.readLine();
tablename = line.substring(0,4);
String formal = tablename;
path_2=path+tablename+".txt";
FileWriter third=new FileWriter(path_2);
third.write(line+"\r\n");
//继续循环
while((line = bw_2.readLine()) != null){
tablename = line.substring(0,4);
if(!tablename.equals(formal)){
third.close();
path_2=path+tablename+".txt";
third=new FileWriter(path_2);
}
formal=tablename;
third.write(line+"\r\n");
}
bw_2.close();
[/code]
path+mid_txt这个字符串指向的文件是一个有上千万条记录的TXT文件,每一行都是数字,是从小到大排列的(不一定连续),现在要求把这个文件分割,按照前四位的不同分割并新建文件。比如第一行记录前四位是0001,那么新建的文件就是0001.txt,然后把整行数据插入0001.txt
但是实现的时候出了点问题,那就是最后一行记录能建成TXT文件,但是不能插进去,我尝试了100W个数据,1000W个数据,总是少一个求帮助看看哪里出问题了,谢谢各位!!!

解决方案 »

  1.   

    能确保这个path+mid_txt字符串路径指向的文件不是空的,所以第一次执行肯定不会出错
      

  2.   

    File second = new File(path+mid_txt);
    BufferedReader bw_2 = new BufferedReader(new FileReader(second));
     //第一次循环
    line = bw_2.readLine();
     tablename = line.substring(0,4);
     String formal = tablename;
     path_2=path+tablename+".txt";
     FileWriter third=new FileWriter(path_2);
     third.write(line+"\r\n");
     //继续循环
    while((line = bw_2.readLine()) != null){
      tablename = line.substring(0,4);
      if(!tablename.equals(formal)){
      third.close();
      path_2=path+tablename+".txt";
      third=new FileWriter(path_2);
      }
      formal=tablename;
      third.write(line+"\r\n");
     }
     
     third.close();//这地方可能抛出异常 特别 try 下 不不必理会
     bw_2.close();