第1个回答 推荐于2017-09-21
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("F:/1.txt");
File file2 = new File("F:/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){
int numOfCommon=0,numOfBase=0,numOfAdap=0;
for (Iterator iterator = textSet.iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
if(StextSet2.contains(name)){
System.out.println("common:"+name);
numOfCommon++;
}else{
System.out.println("1:"+name);
}
numOfBase++;
}
for (Iterator iterator = StextSet2.iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
if(!textSet.contains(name)){
System.out.println("2"+name);
}
numOfAdap++;
}
System.out.println("Common: " + numOfCommon);
System.out.println("1: " + numOfBase);
System.out.println("2: " + numOfAdap);
}
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();
}
}
}
}
差不多就是这个样子,中间有些变量自己改吧嗯本回答被提问者采纳
第2个回答 2013-03-20
package cc;
import java.io.BufferedReader;
import java.io.FileReader;
public class Cmp {
public static void main(String[] args) throws Exception {
BufferedReader br1 = new BufferedReader(new FileReader("1.txt"));
BufferedReader br2 = new BufferedReader(new FileReader("2.txt"));
int all = 0;
int l1=0, l2=0,i,j;
String str1[] = new String[100];
String str2[] = new String[100];
while ((str1[l1]=br1.readLine())!=null) l1++;
while ((str2[l2]=br2.readLine())!=null) l2++;
for (i=0;i<l1;i++) {
for (j=0;j<l2;j++) {
if (str1[i].compareTo(str2[j])==0) {
all ++;
}
}
}
System.out.println("1中有:" + (l1-all) + "条;");
System.out.println("2中有:" + (l2-all) + "条;");
System.out.println("共有:" + all + "条;");
br1.close();
br2.close();
}
}
第3个回答 2013-03-20
/**
*
*/
package com.piggg.baiduzhidao;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* @author piggsoft
* @2013-3-20
* @version 1.0
*/
public class Text {
public static Map<String, Integer> read(String path){
Map<String, Integer> map = new HashMap<String, Integer>();
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(path));
String s;
while((s=reader.readLine())!=null){
if(map.containsKey(s))
map.put(s, map.get(s)+ 1);
else
map.put(s, 1);
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if(reader != null)
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return map;
}
public static Map<String, Integer> join(Map<String, Integer> text1, Map<String, Integer> text2){
Map<String, Integer> map = new HashMap<String, Integer>();
Set<String> keys = text2.keySet();
for(String key : keys){
if(text1.containsKey(key))
if(map.containsKey(key))
map.put(key, map.get(key) + 1);
else
map.put(key, 1);
}
return map;
}
public static void main(String[] args) {
Map<String, Integer> text1 = read("src/1.txt");
Map<String, Integer> text2 = read("src/2.txt");
Map<String, Integer> map = join(text1, text2);
System.out.println("1的:"+text1.size());
System.out.println("2的:"+text2.size());
System.out.println("相同的:"+map.size());
}
}