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

SR 

SR 
END
START

SR 
END
START

SR 
END
START


SR 
END
START


SR 
END
START

SH 
SR 

END


蓝山帝景
浏览 801回答 3
3回答

繁花如伊

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(); } } }写了一个main方法,你自己改成带参数的方法吧!~~~ :D 随便写的没多想,别闲不好。

绝地无双

先按第一列分组,根据分组判断第二列是否可以再分,合并分组,最后在分组前后添加开始结束,虽然比较麻烦但比较专业。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java