Buscar en ELMED

sábado, 26 de mayo de 2012

Comparar dos ficheros o archivos de texto con Java

En la entrada anterior desglosamos de manera util el manejo de ficheros de textos con Java, esta vez vamos a comparar dos archivos de textos linea a linea basado en los mismo principios.

    //Primer archivo a leer 
       //Primer archivo a leer 
       File fichero1=new File("/home/luis/Documentos/FICHEROGRANDE.txt");
       //Segundo archivo a leer
       File fichero2=new File("/home/luis/Documentos/FICHEROGRANDE.txt");
       //llamado ala funcion que compara los archivos
       LeerFichero(fichero1,fichero2);
 public static  void LeerFichero(File Ffichero1,File Ffichero2){
   try {
       String NumLineaDist="";
       /*Si existe el fichero*/
       if(Ffichero1.exists() && Ffichero2.exists()){
           /*Abre un flujo de lectura a el fichero1*/
           BufferedReader Flee1= new BufferedReader(new FileReader(Ffichero1));
           /*Abre un flujo de lectura a el fichero2*/
           BufferedReader Flee2= new BufferedReader(new FileReader(Ffichero2));           
           String Slinea1="",Slinea2="";
           System.out.println("**********Comparando Fichero***********");
           int contador1=0,contador2=0,contador=0;
           /*Lee el fichero line a linea hasta llegar a la ultima*/
           while(Slinea1!=null || Slinea2!=null){
               Slinea1=Flee1.readLine();
               Slinea2=Flee2.readLine();
               /*Si alguno de los dos Fichero no se a acabado de leer*/
               if(Slinea1!=null){
                   contador1++;
               }
               if(Slinea2!=null){
                   contador2++;
               }
               contador++;               
               //si no es la ultima lectura para algun archivo para evitar excepcion por null
               if(Slinea1!=null && Slinea2!=null) { 
                   //Si no son iguales las lineas
                     if(!Slinea1.trim().toUpperCase().equals(Slinea2.trim().toUpperCase())){
                          NumLineaDist+=","+contador;
                       }   
               }else{
                    //si no es la ultima entrada al while donde ambos son null
                   if(!(Slinea1==null && Slinea2==null)) { 
                        NumLineaDist+=","+contador;
                   }
               }
           }
          
           System.out.println("*********Fin Comparacion Fichero**********");
           System.out.println(Ffichero1.getName()+"Tiene "+contador1+" Lineas");
           System.out.println(Ffichero2.getName()+"Tiene "+contador2+" Lineas");
           System.out.println("Las Lineas Distintas son "+NumLineaDist);
           /*Cierra el flujo*/
           Flee1.close();
           Flee1.close();
         }else{
           System.out.println("Alguno De Los Ficheros No Existe");
         }
   } catch (Exception ex) {
       /*Captura un posible error y le imprime en pantalla*/ 
        System.out.println(ex.getMessage());
   } }
Pudes Descargarlo Completo desde Aqui

4 comentarios:

  1. Gracias por el aporte me ayudo BASTANTE

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Si queremos mostrar la información de la línea que es diferente, o únicamente los cambios del archivo como sería? Ayuda por favor

    ResponderEliminar