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.