想匹配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; }} JFileChooser Filter 求助高手,关于settooltiptext问题 帮助寻找知识竞赛系统软件源代码 买那本书学呢? 讨论一下这一问题实现 java中文本框内容完成后回车确定==单击确定 java入门菜鸟请教个问题。 高分求教:怎样用JAVA实现"自动调用对应程序打开指定文件"???----急!!! 怎样把从一个目录下的文件目录和名称写入一个文本文件? PreparedStatement 中 setDate();怎么用?请前辈指教。 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;
}
}