dimanche 7 juin 2015

Difference checker in java

I need a program to check the difference in two text files. I searched google but managed to find the code below:

package xyz;


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Temp {


    public static void main(String args[]) throws IOException{

         BufferedReader br2 = new BufferedReader (new InputStreamReader(System.in));
                    System.out.println("Enter 1st File name:");
                    String str = br2.readLine();
                    System.out.println("Enter 2nd File name:");
                    String str1 = br2.readLine();

                    String s1="";
                    String s2="",s3="",s4="";
                    String y="",z="";

                    //Reading the contents of the files
                    BufferedReader br = new BufferedReader (new FileReader (str));
                    BufferedReader br1 = new BufferedReader (new FileReader (str1));
                    while((z=br1.readLine())!=null){
                        s3+=z;
                        System.out.println(z);
                    }

                    while((y=br.readLine())!=null)
                        s1+=y;

                    System.out.println ();

                    //String tokenizing
                    int numTokens = 0;
                    StringTokenizer st = new StringTokenizer(s1);
                    String[] a = new String[10000];
                    for(int l=0;l<10000;l++)
                        {a[l]="";}
                    int i=0;
                    while (st.hasMoreTokens())
                     {
                        s2 = st.nextToken();
                        a[i]=s2;
                        i++;
                        numTokens++;
                     }

                    int numTokens1 = 0;
                    StringTokenizer st1 = new StringTokenizer (s3);
                    String[] b = new String[10000];
                    for(int k=0;k<10000;k++)
                        {b[k]="";}
                    int j=0;
                    while (st1.hasMoreTokens())
                      {
                       s4 = st1.nextToken();
                       b[j]=s4;
                       j++;
                       numTokens1++;
                      }

            //comparing the contents of the files and printing the differences, if any.
                    int x=0;
                    for(int m=0;m<a.length;m++)
                    {
                        if(a[m].equals(b[m])){}
                        else
                        {
                            x++;
                    System.out.println(a[m] + " -- " +b[m]);
                    System.out.println();}
                        }
             System.out.println("No. of differences : " + x);
             if(x>0){System.out.println("Files are not equal");}
             else{System.out.println("Files are equal. No difference found");}

        }

    }

But this program checks word to word. And if there is a change in any word, for example, if we add anything or delete anything from start of document, it will show error for full document. There is this website http://ift.tt/1pctGZz which does exactly what I want. Please help with similar code.

Aucun commentaire:

Enregistrer un commentaire