哪位大哥指点下,小弟不胜感激!!!
比如说我现在有A 和B两个文档,想知道B相当于A做过了哪些改动,删过什么,增加过什么。A.txt            B.txt
ID               ID
1                2
2                3
3                4
6                5
7                9
8                10
10               11
11               12
这只是我想出来的例子,实际情况是用JDBC对比2个同样结构的数据库表的内容,删过什么,增加过什么,在相同ID下是否修改过什么。

解决方案 »

  1.   

    用一个Map<Id的类型,List<String>>把A文件的内容放进去.记录的字段都转为字符串,放到List中.
    把B文件的内容一条一条与map中的比.不过还是在修改的时候,记录下来比较好吧.
      

  2.   

    如果是按行对比,最好去找 linux 下 diff 的源码或者文章来看
      

  3.   

    Linux+Oracle+Java 87923477 群,欢迎大家的到来。
      

  4.   

    可以这么做,用split读取比较更精确吧
      

  5.   

    简单写了一个求出被删除的id,和被追加的id的方法
    然后楼主可以根据id,再去数据库里查找具体数据的情况
    import java.util.*;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class Test3 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    ArrayList<Integer> before = new ArrayList<Integer>();  //修改前的id
    before.add(1);
    before.add(2);
    before.add(3);
    before.add(6);
    before.add(7);
    before.add(8);
    before.add(10);
    before.add(11);

    ArrayList<Integer> after = new ArrayList<Integer>();  //修改后的id
    after.add(2);
    after.add(3);
    after.add(4);
    after.add(5);
    after.add(9);
    after.add(10);
    after.add(11);
    after.add(12);


    ArrayList deleted = getDeleted(before,after);
    ArrayList appended = getAppended(before,after);

    System.out.println("deleted:"+deleted.toString());
    System.out.println("appended:"+appended.toString());

    }

            //求出被删掉的id
    static ArrayList<Integer> getDeleted(ArrayList<Integer> from, ArrayList<Integer> to){
    ArrayList<Integer> result = new ArrayList<Integer>();
    result.addAll(from);
    for(int i=0;i<from.size();i++){
    if(to.contains(from.get(i))){
    result.remove(from.get(i));
    }
    }
    return result;
    }

            //求出被追加的id
    static ArrayList getAppended(ArrayList<Integer> from, ArrayList<Integer> to){
    ArrayList<Integer> result = new ArrayList<Integer>();
    result.addAll(to);
    for(int i=0; i<to.size();i++){
    if(from.contains(to.get(i))){
    result.remove(to.get(i));
    }
    }
    return result;
    }
    }
      

  6.   

    这个比较负责 你可不可以先把A复制成b 然后b每次改动都用监听器监听呢 这样你就知道b那个时候改了 改了些什么东西
      

  7.   

    去下载 beyondcompare 试试 看看效果
    再来写这个程序 
    、、、、