Bonjour!
Je développe un logiciel de vérification de fichiers en java et pour cela j'utilise une librairie écrite en C (librairie mhash). J'ai donc développé mon algorithme de calcul de hash en C et l'ai interfacé à mon programme JAVA à travers la JNI. J'ai certes galéré mais j'y suis arrivé.
Mon problème est que lorsque je lance le logiciel je lance la vérification du fichier d'origine elle est fausse. Et lorsque que lance la vérification du fichier après l'avoir copié cela fait crasher la JVM (SIGSEGV). Le calcul de hash intervient dans deux parties différentes du logiciel.
J'ai donc essayé de déboguer comme j'ai pu. Et j'ai découvert que dans le premier cas pour les fichiers assez grands (>1Go) il ne lit que 2064 octets du fichier alors que mon tampon de lecture est de 1Mo. D'où un faux calcul du hash.
J'ai donc baissé la taille de mon tampon de lecture à 2064 octets et tout fonctionne parfaitement dans les deux cas. Mais j'avoue que j'aimerai conserver mon tampon de 1Mo.
Si quelqu'un à une idée?
Partager