fanxiaolv 2012-07-23 09:26
浏览 898
已采纳

JAVA读取、处理txt文件并把结果写入新txt

要用Java写个东西读取txt中的数据,若id1或者id2的值不同,就插入END,START(详细见结果),最后只输出修改后的id3列。我对java不熟,读入txt和写出新txt还是能自己弄的,但是不会比较id1的值或者id2的值,请大家帮忙,最好带注释,谢谢 :oops:
源文件:
id1 id2 id3
100037 1 Q
100037 1 SR
100037 1 Q
100037 1 SR
100039 1 Q
100039 1 SR
100044 1 Q
100044 1 SR
100048 1 Q
100048 1 Q
100048 1 SR
100048 2 Q
100048 2 Q
100048 2 SR
100078 1 Q
100078 1 SH
100078 1 SR
100078 1 Q

希望得到的结果:

START
Q
SR
Q
SR
END
START
Q
SR
END
START
Q
SR
END
START
Q
Q
SR
END
START
Q
Q
SR
END
START
Q
SH
SR
Q
END

  • 写回答

3条回答

  • weixin_42608382 2012-07-23 09:56
    关注

    [code="java"]
    public static void main(String[] args) throws Exception{
    String inFile = "D:\in.txt";
    String outFile = "D:\out.txt";
    BufferedReader bs = null;
    BufferedWriter bw = null;
    try{
    bs = new BufferedReader(new FileReader(new File(inFile)));
    List outData = new ArrayList();
    String line = null;
    String[] data = null;
    //如果确定ID1一直是整数的活,可以用整数比,否则可以用字符串的equals比较
    int oldId1 = 0;
    int newId1 = 0;
    int oldId2 = -1;
    int newId2 = -1;
    while((line = bs.readLine()) != null){
    data = line.split(" ");
    newId1 = Integer.parseInt(data[0]);
    newId2 = Integer.parseInt(data[1]);
    if((oldId1 != newId1) || (oldId2 != newId2)){
    if(!outData.isEmpty()){
    outData.add("END");
    }
    outData.add("START");
    }
    oldId1 = newId1;
    oldId2 = newId2;
    outData.add(data[2]);
    }
    if(!outData.isEmpty()){
    outData.add("END");
    bw = new BufferedWriter(new FileWriter(new File(outFile)));
    for(String s : outData){
    bw.write(s + "\r\n");
    }
    }
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    if(bs != null){
    bs.close();
    }
    if(bw != null){
    bw.close();
    }
    }
    }
    [/code]

    写了一个main方法,你自己改成带参数的方法吧!~~~ :D 随便写的没多想,别闲不好。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划