想匹配2个文件A B的字符串,输出不同的行数。实现不了 本帖最后由 yeqin1314 于 2012-09-27 15:57:56 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你真的只是要匹配两个文件到底哪一行不同么?不是有很多现成的文本比较工具么?比如Beyond Compare什么的不是什么都得用java实现的 java写可就难了,不是一两百行代码就写出来的,你还要考虑少一行,多一行,过滤掉注释,tab键,空格,高亮显示,模糊匹配等等 写了个简单的,就是比较每行的内容是否相同package com.study.util;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class TextCompare { public static void main(String[] args) { List<String> lines1 = readFile("C:\\Documents and Settings\\Demon.PC2012050616RTB\\桌面\\新建 文本文档.txt"); List<String> lines2 = readFile("C:\\Documents and Settings\\Demon.PC2012050616RTB\\桌面\\新建 文本文档1.txt"); List<String> lines = compare(lines1, lines2); for(String line : lines){ System.out.println(line); } } public static List<String> compare(List<String> lines1, List<String> lines2){ List<String> lines = new ArrayList<String>(); int rowNum = 0; int i = 0; boolean flag = false; for(String line1 : lines1){ for(i = rowNum;i < lines2.size(); i++){ String line2 = lines2.get(i); if(line1.trim().equals(line2.trim())){ for(; rowNum < i; rowNum++){ lines.add("-------------------------------------- : " + lines2.get(rowNum)); } rowNum = i + 1; flag = true; break; } } if(!flag){ lines.add(line1 + " : --------------------------------------"); } flag = false; } return lines; } public static List<String> readFile(String path){ List<String> lines = new ArrayList<String>(); BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(new File(path))); while(true){ String line = reader.readLine(); if(line == null){ break; }else{ lines.add(line); } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ if(reader != null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return lines; }} java泛型类约束与局限性 控制台的输入流的问题 多线程问题,生产者和消费者问题 jacorb的问题,帮忙看看吧 寻求数据结构和算法(Java实现)电子书 帮一下忙! uml 送分: 关于rose 为什么执行不了 j2sdk1.4.0 in winxp! 新手求大神说下数组问题。把数组中出现奇数次的数输出 spring在filter里面如何获取注解方式定义的bean java 线程
不是有很多现成的文本比较工具么?比如Beyond Compare什么的
不是什么都得用java实现的
你还要考虑少一行,多一行,过滤掉注释,tab键,空格,高亮显示,模糊匹配等等
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;public class TextCompare { public static void main(String[] args) {
List<String> lines1 = readFile("C:\\Documents and Settings\\Demon.PC2012050616RTB\\桌面\\新建 文本文档.txt");
List<String> lines2 = readFile("C:\\Documents and Settings\\Demon.PC2012050616RTB\\桌面\\新建 文本文档1.txt");
List<String> lines = compare(lines1, lines2);
for(String line : lines){
System.out.println(line);
}
}
public static List<String> compare(List<String> lines1, List<String> lines2){
List<String> lines = new ArrayList<String>();
int rowNum = 0;
int i = 0;
boolean flag = false;
for(String line1 : lines1){
for(i = rowNum;i < lines2.size(); i++){
String line2 = lines2.get(i);
if(line1.trim().equals(line2.trim())){
for(; rowNum < i; rowNum++){
lines.add("-------------------------------------- : " + lines2.get(rowNum));
}
rowNum = i + 1;
flag = true;
break;
}
}
if(!flag){
lines.add(line1 + " : --------------------------------------");
}
flag = false;
}
return lines;
}
public static List<String> readFile(String path){
List<String> lines = new ArrayList<String>();
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(new File(path)));
while(true){
String line = reader.readLine();
if(line == null){
break;
}else{
lines.add(line);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return lines;
}
}