本帖最后由 yeqin1314 于 2012-09-27 15:57:56 编辑

解决方案 »

  1.   

    你真的只是要匹配两个文件到底哪一行不同么?
    不是有很多现成的文本比较工具么?比如Beyond Compare什么的
    不是什么都得用java实现的
      

  2.   

    java写可就难了,不是一两百行代码就写出来的,
    你还要考虑少一行,多一行,过滤掉注释,tab键,空格,高亮显示,模糊匹配等等
      

  3.   

    写了个简单的,就是比较每行的内容是否相同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;
    }
    }