java分别读取两个txt文件里的数据再进行比较。再分别列出这两个文件中共有的和分别独有的数据。

两个txt文件里存着不同数量的推文数据,每一行开头的一串数字是该条推文的ID,ID和推文内容用“:”冒号隔开,根据ID比较两个txt文件中推文,再分别列出连个txt文件中共有的推文,第一个文件独有的,和第二个文件独有的推文。
txt文件如下。求份详细点的代码。
1.txt
232204745903841280:RT @ZOO: Amazing - a runner falls over in the women''s 400m hurdles, but look at her surname. You couldn''t write it #London2012 http://t. ...
232204745455046658:RT @mrianleslie: Why is that our Olympic athletes are so impressive and likeable in interviews and our footballers so dull, dim and char ...
232204746340044800:They should have Olympic breaks to give you a chance to run to the fridge to get the beer !
232204746574946306:He nearly got knocked out and took the fight hahaha #nevin #London2012
2.txt
232204746340044800:They should have Olympic breaks to give you a chance to run to the fridge to get the beer !
232204746574946306:He nearly got knocked out and took the fight hahaha #nevin #London2012
232204745958371328:RT @ZOO: Amazing - a runner falls over in the women''s 400m hurdles, but look at her surname. You couldn''t write it #London2012 http://t. ...
232204746281320449:RT @mikelgustafson: Katie Ledecky cannot: drive, vote, drink, smoke, gamble, buy a handgun, or attend "Magic MIke"... but she can become ...
232204746830786560:Marik que nervios Katerin Ibarguen!!.. @London2012

第1个回答  2013-03-06
ID后面是以个推文还是多个推文?

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class FileCompare {
public static void main(String[] args) throws IOException {
FileCompare c = new FileCompare();
c.compareFile();
}

public void compareFile(){
File file = new File("D:\\1.txt");
File file2 = new File("D:\\2.txt");
Set fileTextSet = new HashSet();
Set file2TextSet = new HashSet();
try {
getText(file,fileTextSet);
getText(file2,file2TextSet);
compareSet(fileTextSet, file2TextSet);
} catch (Exception e) {
e.printStackTrace();
}
}

private void compareSet(Set textSet,Set StextSet2){
for (Iterator iterator = textSet.iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
if(StextSet2.contains(name)){
System.out.println("共同报文:"+name);
}else{
System.out.println("1独有报文:"+name);
}
}
for (Iterator iterator = StextSet2.iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
if(!textSet.contains(name)){
System.out.println("2独有报文:"+name);
}
}
}
private void getText(File file,Set textSet) throws IOException {
BufferedReader br = null;
InputStream is = null;
try {
is = new FileInputStream(file);
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String lineStr = null;
while ((lineStr = br.readLine())!=null) {
String text = lineStr.substring(lineStr.indexOf(":"));//按照需求切分
textSet.add(text);
}
if(br!=null){
br.close();
}
if(is!=null){
is.close();
}
}catch (UnsupportedEncodingException e) {
e.printStackTrace();
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
} finally {
if(br!=null){
br.close();
}
if(is!=null){
is.close();
}
}
}

}追问

怎样改代码可以在打印结果里分别显示共同报文、1独有报文和2独有报文呢?现在的是区分出报文后分一条写一条,三种报文混在一起的。如图。

java分别读取两个txt文件里的数据进行比较,分别列出这两个文件中共有...
分别读取这2个文件,循环读取,一次读取1行 将读取的数据分别放入2个List中,分别为list1,list2。定义变量sameCount,用于记录1,2都有的数据条数。2.循环list1,取出其中的每一条,并与list2中对比,相同则sameCount++;至于输出1,2中各有多少条数据就很简单了,就是list1.size()和list2.size(...

Java 两个txt文件比较内容是否相同,只需输出相同或者不同
public class TxtCompare { private static byte[] b;public static void main(String[] args) throws Exception{ File f1=new File(文件路径);File f2=new File(文件路径);int max=2048;StringBuffer sb1=new StringBuffer();StringBuffer sb2=new StringBuffer();FileInputStream fis=new FileInp...

JAVA实现如何比较两个文档之间的异同点
这个文件比较功能,我做过比较txt简单文本文件的。office文件没比过,说下想法,希望能对你有帮助 打开要读取的两份文件,依次读取A所有行数,将每一行的数据以字符串的形式存储在一个字符串数组里,假如是 StringA[] ,同时也一样处理 B文件 分别从开始遍历两个 字符串数组,比较 相似(相同) 字...

java读取两个TXT文件并且处理把两份内容写入一个文件,求解,
设置好path以后通过命令提示符到你要编译的java源文件目录中,假设这个目录在D盘根目录(windows系统),那命令提示符到D盘,然后javac 文件名 ,这里要带扩展名,比如你的java源文件叫AAA,必须javac AAA.java,编译的是文件,运行的是类,运行时只需要java AAA 编译后会在同目录下产生一个.class类文...

如何用java实现读取txt文件并对其内容进行处理?java菜菜鸟,求好心人来...
public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { System.out.println("以字节为单位读取文件内容,一次读一个字节:"); \/\/ 一次读一个字节 in = new FileInputStream(file); int tempbyte; while ((tempbyte = in.read()) !=...

在java中,怎样过滤两个文本文件的相同数据,把相同的显示出来,急啊_百 ...
public class TxtCompare { private static byte[] b;public static void main(String[] args) throws Exception{ File f1=new File(文件路径);File f2=new File(文件路径);int max=2048;StringBuffer sb1=new StringBuffer();StringBuffer sb2=new StringBuffer();FileInputStream fis=new File...

对比2个txt文本,要求输出显示哪行那列有错误。其中两个文本有变化数据...
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.

在java中我读取本地txt文件,txt文件中有两行数据,要在这个文件中每一行...
import java.io.*;public class FileExample{ public static void main(String args[]){ try { char str[]=new char[20];FileReader f1=new FileReader("a.txt");FileWriter f2=new FileWriter("b.txt");f1.read(str);f2.write(str);f2.close();f1.close();} catch(Exception e){ }...

java读取txt文档数据,然后对txt文件数据按照语文数学总分成绩由大至小...
你既然会使用IO,那么简单了啊把txt文件读到内存中,在内存中自己定义对应的数据对象,然后对这个对象数组进行排序就可以了 直接在读txt文件过程中不是能排序的

如何用java读取txt文件中的矩阵
\/\/ 初始化一个用于存储txt数据的数组 String[][] rows = new String[10][10]; int index = 0; BufferedReader br = null; try { \/\/ 读文件了. 路径就是那个txt文件路径 br = new BufferedReader(new FileReader(new File("D:\\\\valuable_book\\\\juzhen.txt"))); ...

相似回答