Código:
Tengo que hacer un ejercicio que haga lo siguiente: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"); } } }
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.