a mas de alguien le a pasado que tiene que compara archivos y no se le ocurre como, la solucion mas usual es compara los nombres o los pesos, pero esto no puede llevar a una solucion erronea (llamese error al eliminar un archivo creyeno que esta repetido o por el contrario dejar dos archivos iguales).
por ello al ver los MD5 podemos esta a un porsentaje muy alto de que el archivo es unico, al compara el MD5 de ambos archivos en duda.
aqui les dejo un pequeño codigo que le saca el MD5 a un archivo.
Código:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
*
* @author Norman Th. Glaves
*/
public class CheckSum {
/***
* Convierte un arreglo de bytes a String usando valores hexadecimales
* @param digest arreglo de bytes a convertir
* @return String creado a partir de <code>digest</code>
*/
private static String toHexadecimal(byte[] digest){
String hash = "";
for(byte aux : digest) {
int b = aux & 0xff;
if (Integer.toHexString(b).length() == 1) hash += "0";
hash += Integer.toHexString(b);
}
return hash;
}
/***
* Realiza la suma de verificación de un archivo mediante MD5
* @param archivo archivo a que se le aplicara la suma de verificación
* @return valor de la suma de verificación.
*/
public static String getMD5Checksum(String _file) {
File archivo;
archivo = new File(_file);
byte[] textBytes = new byte[1024];
MessageDigest md = null;
int read = 0;
String md5 = null;
try {
InputStream is = new FileInputStream(archivo);
md = MessageDigest.getInstance("MD5");
while ((read = is.read(textBytes)) > 0) {
md.update(textBytes, 0, read);
}
is.close();
byte[] md5sum = md.digest();
md5 = toHexadecimal(md5sum);
} catch (FileNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
} catch (IOException e) {
}
return md5;
}
}
Obs.
que es un MD5? [URL="http://es.wikipedia.org/wiki/MD5"]aqui[/URL] la respuesta.