Tema: ficheros
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/11/2008, 06:33
Juny18
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años, 9 meses
Puntos: 2
ficheros

Tengo este Código:

Código:
package ejercicio4ficheros;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 *
 * @author pc1
 */
public class ejercicio4clase 
{
     
    public void comparar(String origen,String destino)throws IOException
    {
        int i;
        String almacena;
        File archivo_a_abrir = null; 
        File archivo_destino=null;
        FileReader frarchivo1 = null;
        FileReader frarchivo2=null;
        String linea,linea2=null;

        try {
                archivo_a_abrir = new File (origen);
                archivo_destino=new File (destino);

                frarchivo1 = new FileReader (archivo_a_abrir);
                BufferedReader br2 = new BufferedReader(frarchivo1);

                frarchivo2=new FileReader (archivo_destino);
                BufferedReader br3 = new BufferedReader(frarchivo2);

                int contlineas=0;

                //te recorre las lineas y va comparando que sean iguales o no y además si 
                //son de distinto tamaño.
                //NOS HACE ESTO SOBRE LAS LINEAS DE UN ARCHIVO.
                //LEYENDO POR COLUMNAS O POR CARACTER
                while((linea=br2.readLine())!=null &&(linea2=br3.readLine())!=null)
                {   
                    contlineas++;
                   if(linea.equals(linea2)) //para ver si son iguales los ficheros.
                   {
                       System.out.println("Las lineas de los ficheros son iguales");
                   }
                   if(!linea.equals(linea2));
                   {
                      for (i=0;i<linea.length()&&i<linea2.length();i++)
                      {
                          if(linea.charAt(i)!=linea2.charAt(i))
                            System.out.println("Error, linea: "+contlineas+" columna: "+i+1); 
                      }
                      if(i<linea.length()) //linea > linea2
                      {
                          System.out.println("El primer es mayor en CARACTERES que el segundo");
                      }  
                      if(i<linea2.length())  //linea2>linea
                      {
                          System.out.println("El segundo es mayor en CARACTERES que el primero.");
                      }
                   }
              
                }

                //Comprueba que el fichero sea de igual tamaño o no.
                //LEYENDO POR FILAS O LINEAS
                if(linea!=null)
                {
                    System.out.println("Error en el fichero 1" + linea);
                    while((linea=br2.readLine())!=null)
                        System.out.println("error fichero 1 " + linea);
                }
                    
                if(linea2!=null)
                {    
                    System.out.println("Error fichero 2" +linea2);
                    while((linea2=br3.readLine())!=null)
                        System.out.println("Error fichero 2" +linea2);
                }
                    frarchivo2.close();
                  frarchivo1.close();
        }
        catch(FileNotFoundException error)
        {
            System.out.println("Alguno de los 2 ficheros no existen.");
        }
        catch(IOException error2)
        {
            System.out.println("Error en E/S del HD");
        }        
    }
}
Tengo que hacer un ejercicio que haga lo siguiente:

Escribir un programa que compare dos archivos y muestre las diferencias entre
ambos, mostrando el numero de linea y columna.


Me sale esto al ejecutar el programa en NETBEAN 6.1 :

init:
deps-jar:
Compiling 1 source file to C:\Documents and Settings\pc1\Mis documentos\NetBeansProjects\ejercicio4ficheros\bui ld\classes
compile:
run:
Escriba el nombre del fichero origen:
c:\fich1.txt
Escribe el destino:
c:\fich2.txt
El segundo es mayor en CARACTERES que el primero.
Error, linea: 2 columna: 01
Error, linea: 2 columna: 11
Error, linea: 2 columna: 21
El segundo es mayor en CARACTERES que el primero.
Error en el fichero 1 :3332 (esto se supone que son las lineas, pero 3332 no es la linea 3332 , si no que hay una diferencia de caracteres 3332 en la linea 3 (ver el fichero 2)
BUILD SUCCESSFUL (total time: 10 seconds)


Este es el contenido de los ficheros.

-----fich1.txt------
hola
222
3332

----fich2.txt------
hola 2223332
hola 2223332

El segundo es mayor en caracteres que el primero. Pero lo que no comprendo por que sale lo de Error, linea: 2 columna 21 ( y así con la 01 y 11). y lo de Error en el fichero 1 : 3332

Ayudadme llevo 3 días con el mismo ejercicio.