IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Comment comparer 2 fichiers textes et afficher leurs différences ?


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Juillet 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Elève ingénieur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Comment comparer 2 fichiers textes et afficher leurs différences ?
    Bonjour à tous !

    Puisque vous êtes plutôt performant en termes de résolution de problèmes, j'ai décider de venir vous rendre visite ! ^^
    Je suis en pleine réalisation d'une application permettant la génération et la correction de devoirs de cryptographie

    Quand le professeur crée un devoir de cryptographie, il sélectionne des algorithmes de cryptage et le logiciel choisit aléatoirement une phrase dans un texte qu'il va ensuite crypter à l'aide des algos sélectionnés.

    S'ensuit la génération de deux fichiers (il y a des mots tchèque, donc c'est normal si vous comprenez pas tout ^^) :

    • Un fichier destiné au prof, qui contient tous les attributs nécessaires à la génération du devoir (à savoir : le texte initial, le texte crypté, le nom de l'algorithme utilisés, et les caractéristiques de l'algo) :
      Cryptography 2nd semester Zadání č. 148
      Jméno: Maxime Rigal (2) Datum zadání: 09.07.2014 Datum odevzdání: 31/07/2014
      Pokyny:
      Hi everyone,
      Here is your homework, I hope you'll enjoy it !
      Úloha 1:
      INFECTEDCOMPUTERSBEGINACCEPTINGCOMMUNICATIONSFROMCOMMANDANDCONTROLCCSERVERSCENTRALIZEDMACHINESTHATAREABLETOSENDCOMMANDSTOBOTNETMACHINESUSUALLYBYMEANSOFINTERNETRELAYCHATIRCACOMMUNICATIONPROTOCOLDESIGNEDFORCHATROOMS
      (Algoritmus: 02 - Afinni sifra [a=17 b=10])
      QXRASVAJSOGFMVANEBAIQXKSSAFVQXISOGGMXQSKVQOXERNOGSOGGKXJKXJSOXVNOPSSEANDANESAXVNKPQTAJGKSZQXAEVZKVKNAKBPAVOEAXJSOGGKXJEVOBOVXAVGKSZQXAEMEMKPPCBCGAKXEORQXVANXAVNAPKCSZKVQNSKSOGGMXQSKVQOXFNOVOSOPJAEQIXAJRONSZKVNOOGE
      Úloha 2:
      CRIMINALEXTORTIONBYMEANSOFDDOSBEGINSWITHTHEEXTORTINGCOMPANYPICKINGATARGETBUSINESSANDLAUNCHINGARELATIVELYSMALLSAMPLEDDOSATTACKAGAINSTTHEM
      (Algoritmus: 04 - Playfair [key=LAKERS W->V])
      FKJGGPKAKYNPFZHPOSZJRKUGT BCYBQBCLJGPBUMPMOJAYKZPTA PMUNBPITLOXQPICPUNROKLJLO FLGGPLDUCLOSELVPSIJUNKLRA ROHXRAUDHRKUSGRHNKDJYCNBR OZPKBEKHLGPFNZPJAIZ
      Úloha 3:
      MANYATTACKSAGAINSTGOVERNMENTAGENCIESAREPOLITICALLYMOTIVATEDATTACKSHOWEVERTHEHACKERGROUPLULZSECSUCCESSFULLYMOUNTEDATTACKSAGAINSTUNITEDSTATESANDOTHERGOVERNMENTALAGENCIESDURINGTHESUMMEROFMOSTLYFORENTERTAINMENTTHEIRMOTTOWASTHEWORLDSLEADERSINHIGHQUALITYENTERTAINMENTATYOUREXPENSE
      (Algoritmus: 08 - Sloupcova transpozice [16x18])
      MSCLKECDNHGSRERHNSATIYSRCAIEEUEILQMENGEMHGETTRNMNRDUEXYOSOORSTEGCMTMSANXAVATWOSADOIEEOLLTXTERIEUFCSVERRTEIAXTREVVPUKTESOTTATTXANPAELLSARDFAODYYXCMOTRULATNUMIWEEOXKELETLYGEMRONARNUXSNIDHZMASEISMSSTRXATTAESOIANNTETIEEXGAITHEUNNTGLNHNRXXAGCTACNSDATYTEHTPXIEAACSTTOLHFTWIAEXNNLCKUEUTAEOHOGINX
      Úloha 4:
      NOTONLYARECYBERATTACKSCARRIEDOUTBYAPTSINDIVIDUALSORORGANIZATIONSPOSSESSINGSIGNIFICANTRESOURCESANDASPECIFICTARGETBUTALSOBYAVARIETYOFOTHERACTORSRANGINGFROMLEGITIMATEBUSINESSESTOORGANIZEDCRIMEANDEVENTOAMATEURHACKERSWITHNONFINANCIALMOTIVESSUCHASLULZSEC
      (Algoritmus: 01 - Jednoduchy posun [a=12])
      ZAFAZXKMDQOKNQDMFFMOWEOMDDUQPAGFNKMBFEUZPUHUPGMXEADADSMZULMFUAZEBAEEQEEUZSEUSZURUOMZFDQEAGDOQEMZPMEBQOURUOFMDSQFNGFMXEANKMHMDUQFKARAFTQDMOFADEDMZSUZSRDAYXQSUFUYMFQNGEUZQEEQEFAADSMZULQPODUYQMZPQHQZFAMYMFQGDTMOWQDEIUFTZAZRUZMZOUMXYAFUHQEEGOTMEXGXLEQO
      Úloha 5:
      CLASSIFYINGTHEDIFFERENTTYPESOFDOSANDDDOSATTACKSBYUSINGONLYONEDIMENSIONISEXCEPTIONALLYDIFFICULTEACHTYPEOFATTACKHASDIFFERENTCHARACTERISTICSTHATMAYSUGGESTITBELONGSTOMULTIPLECATEGORIES
      (Algoritmus: 03 - Substituce s klicem [key=DREAM])
      EJDSSGBYGLCTFMAGBBMQMLTTYOMSNBANSDLAAANSDTTDEISRYUSGLCNLJYNLMAGKMLSGNLGSMXEMOTGNLDJJYAGBBGEUJTMDEFTYOMNBDTTDEIFDSAGBBMQMLTEFDQDETMQGSTGESTFDTKDYSUCCMSTGTRMJNLCSTNKUJTGOJMEDTMCNQGMS
    • Un fichier destiné à l'élève, qui contient uniquement le texte crypté :
      Cryptography 2nd semester Zadání č. 148
      Jméno: Maxime Rigal (2) Datum zadání: 09.07.2014 Datum odevzdání: 31/07/2014
      Pokyny:
      Hi everyone,
      Here is your homework, I hope you'll enjoy it !
      Úloha 1:
      QXRASVAJSOGFMVANEBAIQXKSSAFVQXISOGGMXQSKVQOXERNOGSOGGKXJKXJSOXVNOPSSEANDANESAXVNKPQTAJGKSZQXAEVZKVKNAKBPAVOEAXJSOGGKXJEVOBOVXAVGKSZQXAEMEMKPPCBCGAKXEORQXVANXAVNAPKCSZKVQNSKSOGGMXQSKVQOXFNOVOSOPJAEQIXAJRONSZKVNOOGE
      Úloha 2:
      FKJGGPKAKYNPFZHPOSZJRKUGT BCYBQBCLJGPBUMPMOJAYKZPTA PMUNBPITLOXQPICPUNROKLJLO FLGGPLDUCLOSELVPSIJUNKLRA ROHXRAUDHRKUSGRHNKDJYCNBR OZPKBEKHLGPFNZPJAIZ
      Úloha 3:
      MSCLKECDNHGSRERHNSATIYSRCAIEEUEILQMENGEMHGETTRNMNRDUEXYOSOORSTEGCMTMSANXAVATWOSADOIEEOLLTXTERIEUFCSVERRTEIAXTREVVPUKTESOTTATTXANPAELLSARDFAODYYXCMOTRULATNUMIWEEOXKELETLYGEMRONARNUXSNIDHZMASEISMSSTRXATTAESOIANNTETIEEXGAITHEUNNTGLNHNRXXAGCTACNSDATYTEHTPXIEAACSTTOLHFTWIAEXNNLCKUEUTAEOHOGINX
      Úloha 4:
      ZAFAZXKMDQOKNQDMFFMOWEOMDDUQPAGFNKMBFEUZPUHUPGMXEADADSMZULMFUAZEBAEEQEEUZSEUSZURUOMZFDQEAGDOQEMZPMEBQOURUOFMDSQFNGFMXEANKMHMDUQFKARAFTQDMOFADEDMZSUZSRDAYXQSUFUYMFQNGEUZQEEQEFAADSMZULQPODUYQMZPQHQZFAMYMFQGDTMOWQDEIUFTZAZRUZMZOUMXYAFUHQEEGOTMEXGXLEQO
      Úloha 5:
      EJDSSGBYGLCTFMAGBBMQMLTTYOMSNBANSDLAAANSDTTDEISRYUSGLCNLJYNLMAGKMLSGNLGSMXEMOTGNLDJJYAGBBGEUJTMDEFTYOMNBDTTDEIFDSAGBBMQMLTEFDQDETMQGSTGESTFDTKDYSUCCMSTGTRMJNLCSTNKUJTGOJMEDTMCNQGMS


    Le but étant que, à partir du fichier qui lui est fournit (contenant uniquement le texte crypté), l'élève doit retrouver tout ce qui est contenu dans le fichier de correction du prof (le texte initial, le nom de l'algorithme, les caractéristiques de l'algorithme). Il rentre toute ces données dans un formulaire intelligemment conçut (puisque c'est moi qui l'ai fait ), qui permet de générer un nouveau fichier texte qui a exactement la structure du fichier de correction précédemment cité...

    On en vient donc à mon problème :

    Comment faire pour comparer les deux fichiers et lister toutes les différences entre eux pour que le programme puisse "corriger" l'élève et le noter ?



    (Désolé pour le méga pâté de la mort )

  2. #2
    Membre confirmé Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Points : 566
    Points
    566
    Par défaut
    Salut,
    travailles tu avec une BDD ou seulement des fichiers que tu parses?

    ++
    "Aucun de nous ne sait ce que nous savons tous, ensemble."
    Lien vers mon appli Funcash n'hésitez pas à donner votre avis

  3. #3
    Candidat au Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Juillet 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Elève ingénieur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Bonjour freddou17,

    Déjà merci de ta réponse ! Non je ne travaille pas avec une base de données, le prof pour qui je réalise cette appli m'a expressément demandé d'éviter d'en utilisé, et étant donné que ça servira 1 fois par semestre, c'est pas non plus vraiment nécessaire ^^
    Je travaille donc avec des fichiers texte que je charge et que je parse.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Points : 170
    Points
    170
    Par défaut
    Si le fichiers ne sont pas trop gros tu peux utiliser Guava de Google pour comparer les deux fichiers par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public static boolean areTheSameFile (File file1, File file2){
    return Files.toString(file1, "UTF-8").equals(Files.toString(file2,"UTF-8");
    }

    A dois sélectionner le bon "encoding".

  5. #5
    Membre confirmé Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Points : 566
    Points
    566
    Par défaut
    Ok, est-ce que tu peux t'appuyer sur un template de fichier?
    Le mieux je pense c'est que l'élève et le prof est le même template

    ex:

    Fichier élève


    Cryptography 2nd semester Zadání č. 148
    Jméno: Maxime Rigal (2) Datum zadání: 09.07.2014 Datum odevzdání: 31/07/2014
    Pokyny:
    Hi everyone,
    Here is your homework, I hope you'll enjoy it !
    Úloha 1:
    INFECTEDCOMPUTERSBEGINACCEPTINGCOMMUNICATIONSFROMCOMMANDANDCONTROLCCSERVERSCENTRALIZEDMACHINESTHATAREABLETOSENDCOMMANDSTOBOTNETMACHINESUSUALLYBYMEANSOFINTERNETRELAYCHATIRCACOMMUNICATIONPROTOCOLDESIGNEDFORCHATROOMS
    REPONSE 1: !REPONSE ELEVE 1!
    QXRASVAJSOGFMVANEBAIQXKSSAFVQXISOGGMXQSKVQOXERNOGSOGGKXJKXJSOXVNOPSSEANDANESAXVNKPQTAJGKSZQXAEVZKVKNAKBPAVOEAXJSOGGKXJEVOBOVXAVGKSZQXAEMEMKPPCBCGAKXEORQXVANXAVNAPKCSZKVQNSKSOGGMXQSKVQOXFN


    Lorsque l'élève rempli ton formulaire tu remplace !REPONSE ELEVE 1! par ce qu'il a saisi afin de créer exactement le même fichier que celui du prof et après tu récupères les deux fichiers et tu les compare ligne à ligne...

    ++
    "Aucun de nous ne sait ce que nous savons tous, ensemble."
    Lien vers mon appli Funcash n'hésitez pas à donner votre avis

  6. #6
    Candidat au Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Juillet 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Elève ingénieur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Tu dois lire dans mes pensées ^^

    C'est exactement ce que j'ai fait :
    En fait la partie élève que je t'ai fournie c'est juste l'énoncé que reçoit l'élève, ensuite une fois qu'il à réalisé le devoir, il remplis un formulaire qui génère un fichier texte de structure identique à celui du professeur !
    D'où mon problème initial : trouver un moyen de comparer 2 fichiers texte et d'afficher les différences ligne à ligne, qui signifieront que l'élève à fait une erreur, et qu'il faut donc enlever des points...
    Connais-tu un moyen (un pattern ou une librairie particulière) permettant de retourner les différences entre deux textes ?

  7. #7
    Membre confirmé Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Points : 566
    Points
    566
    Par défaut
    là comme ça je te dirais de parcourir les deux fichiers lignes à lignes, si elles sont différentes les stockées et pourquoi générer un fichier erreur si la liste d'erreurs est différente de vide
    "Aucun de nous ne sait ce que nous savons tous, ensemble."
    Lien vers mon appli Funcash n'hésitez pas à donner votre avis

  8. #8
    Candidat au Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Juillet 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Elève ingénieur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Le problème c'est que je suis censé noter l'élève par le biais de mon appli ...
    C'est à dire que le traitement du fameux fichier erreur doit être automatisé pour ensuite attribuer une note à l'élève !

  9. #9
    Candidat au Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Juillet 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Elève ingénieur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par elmor Voir le message
    Si le fichiers ne sont pas trop gros tu peux utiliser Guava de Google pour comparer les deux fichiers par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public static boolean areTheSameFile (File file1, File file2){
    return Files.toString(file1, "UTF-8").equals(Files.toString(file2,"UTF-8");
    }

    A dois sélectionner le bon "encoding".
    Salut Elmor,

    Désolé, j'avais zappé ton message ! en effet, mes fichiers sont plutot légers et l'encodage est bien en UTF-8.
    Pourrais-tu me détailler grossièrement le fonctionnemen t de GUAVA ?
    Si je comprends bien les quelques lignes de codes que tu as écrites, le type de retour de la méthode est booléen, du genre : OUI les textes sont identiques ou NON ils ont des différences ?
    Si c'est le cas, ça corresponds pas vraiment à ce que je cherche ... J'aimerai pouvoir récupérer en retour l'ensemble des différences !

  10. #10
    Membre confirmé Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Points : 566
    Points
    566
    Par défaut
    Si tu veux vraiment que la note soit automatique sans aucun contrôle, je pense que tu devrais utiliser le format xml afin de pouvoir comparer des noeuds, des attributs (des zones et par conséquent des contenus bien identifiables).
    "Aucun de nous ne sait ce que nous savons tous, ensemble."
    Lien vers mon appli Funcash n'hésitez pas à donner votre avis

  11. #11
    Candidat au Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Juillet 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Elève ingénieur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Ah c'est vrai que ça pourrait marcher !
    Mais je suis vraiment en carton sur le xml, je sais pas vraiment comment le manipuler... Ca te parait plus simple de comparer deux documents XML que deux documents textes ? Tu connais une librairie ou un programme qui réalise la comparaison et affiche les différences de deux documents XML ?

    Parce que sinon je me suis orienté sur les regex pour le moment en essayant de trouver un moyen de récupérer les bonnes données à l'intérieur de mon fichier texte... Mais je t'avoue que c'est encore assez obscur pour moi pour le moment !

  12. #12
    Membre confirmé Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Points : 566
    Points
    566
    Par défaut
    Voici la structure que je verrais

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <evaluation numero="1" date="">
           <texteUtilise>dddddddddddddddddddddddddddddddddddddd</textUtilise>
           <texteCrypte>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</texteCrypte>
           <caracteristiques carat1="fff" caract2="fgggg"/>
           <nomAlgo>jjjjjjj</nomAlgo> 
    </evaluation>

    Pour la gestion du xml regardes ici

    Je pense qu'en passant par du xml ça sera beaucoup plus facile
    "Aucun de nous ne sait ce que nous savons tous, ensemble."
    Lien vers mon appli Funcash n'hésitez pas à donner votre avis

  13. #13
    Candidat au Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Juillet 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Elève ingénieur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Merci pour toutes les infos, je teste ça et je te donnerai un retour si j'y arrive !
    Bonne journée !

Discussions similaires

  1. Comparer 2 fichiers texte et récupérer la différence
    Par olivier1209 dans le forum VBScript
    Réponses: 6
    Dernier message: 12/08/2011, 04h22
  2. Comment générer un fichier texte à partir d'un XML et XSL
    Par Jayceblaster dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/07/2005, 22h42
  3. Réponses: 5
    Dernier message: 16/07/2005, 00h01
  4. Comment créer un fichier texte?
    Par Crazynoss dans le forum ASP
    Réponses: 2
    Dernier message: 08/05/2005, 19h53
  5. Comment écrire un fichier texte au format MS-DOS ?
    Par fredfred dans le forum Langage
    Réponses: 9
    Dernier message: 20/01/2005, 09h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo