Bonjour,
Je souhaiterais savoir si il y a un moyen, en java, de comparer 2 fichiers texte afin de vérifier que le contenu est identique dans les 2.
Merci d'avance
Bonjour,
Je souhaiterais savoir si il y a un moyen, en java, de comparer 2 fichiers texte afin de vérifier que le contenu est identique dans les 2.
Merci d'avance
Salut,
Si je ne me trompe pas il n'y a rien de tout fait (en standard du moins).
Mais il suffit de lire les fichiers en parallèles et de comparer les données byte à byte...
a++
Sinon il te suffit de vérifier l' "empreinte" de chacun des 2 fichiers (cf. MessageDigest.java), avec une fonction de hachage du type SHA-1 voire MD5 : leur (in)égalité d'empreinte t'indiquera leur (in)égalité de contenu !
![]()
... mais l'égalité d'empreinte n'indiquera pas une égalité de contenu... donc c'est un bon test de premier niveau, mais ca ne dispense pas de controler le fichier dans le détail
Dans l'absolu c'est vrai ; dans la réalité c'est fauxEnvoyé par bigben99
![]()
fr.wikipedia.org
Plus précisément, pour une fonction de hachage H, il faut que : H(x) ≠ H(y) implique x ≠ y et H(x) = H(y) implique probablement x = y. Si l'ensemble dans lequel est tiré x est plus grand que l'ensemble des valeurs prises par H, cette dernière propriété est difficile à évaluer. En fait, la probabilité dépend grandement du domaine d'application de cette fonction de hachage.
Non, dans la réalité ca n'est pas faux, c'est peu probable. Les fonctions de hachage sont simplement des fonctions non bijectives (comme par exemple la fonction arrondi(x)), la probabilité depend donc du rapport entre l'ensemble de départ et l'ensemble d'arrivé.Envoyé par g_rare
La faible probabilité provient donc du fait qu'en règle générale, les fonctions de hachage travaillent sur des ensembles suffisament grands.
Salut,
Si ce sont des fichiers textes, ça ira plus vite de faire un bufferedreader et de comparer ligne par ligne, non ?
A+
Oui, si le resultat de la comparaison de l'application d'une fonction de hachage est identique, non dans tous les autres cas.Envoyé par KiLVaiDeN
La question est donc de savoir si dans l'ensemble, les fichiers qui seront comparés seront le plus souvent identiques ou différents. Et en fonction de cette probabilité de determiner, s'il est plus intéressant de procéder dans un premier temps à une comparaison par hachage ou non.
Je crois que la comparaison à effectuer est d'abord sur la taille du fichier.
La fonction de hashage doit déjà parcourir tout le fichier, ce qui est dommage; autant ne faire qu'un seul parcours.
On peut cependant, dans une application normale qui ne doit pas gérer des cas exceptionnels de sécurité, totalement se laisser convaincre par la comparaison des hashs; MD5 a des collisions mais elles ne sont que mathématiquement prouvées, et dans la pratique c'est infiniement improbable que ça se produise..
Et si un doute subsiste, il y a toujours des fonctions de hashage comme Whirlpool par exemple ( dont le code source existe en Java ) qui n'ont pas encore été cassées.
Partager