Vous pouvez lire le contenu binaire du fichier et de comparer les octets que vous obtenez. Pour lire le fichier, vous pouvez soit utiliser ReadAllBytes
(si le fichier est de taille raisonnable et s'adaptera à la mémoire confortablement) ou vous pouvez utiliser FileStream
et lire des blocs de données à partir des deux fichiers.
La structure de l'approche en utilisant des tampons pourrait ressembler à ceci:
byte[] buffer1 = new byte[1024], buffer2 = new byte[1024];
using(var fs1 = new FileStream(firstFile, FileMode.Open, FileAccess.Read)
using(var fs2 = new FileStream(secondFile, FileMode.Open, FileAccess.Read)
{
// Use: fs.Read(buffer1, 0, 1024) to repeatedly read 1kb of data
// from both fs1 and fs2 and compare the content in buffer1 and buffer2
}
Certaines personnes ont recommandé d'utiliser hash, mais ce n'est pas une bonne idée - si les fichiers sont les mêmes, vous aurez besoin de lire tout les données du fichier, le calcul des hachages n'est donc pas plus efficace que la simple lecture et la comparaison de toutes les données. Cependant, si les fichiers diffèrent dans les premiers octets, vous devrez lire seulement les premiers octets (si vous comparez octet par octet)!
Des hachages seraient utiles si vous vouliez comparer plusieurs fichiers (par exemple chacun avec chacun).
Vous devez clarifier votre question: avec quoi comparez-vous le fichier binaire?S'agit-il d'un autre fichier binaire ou s'agit-il d'une instance en mémoire d'une classe qui devrait ou ne devrait pas être sérialisée dans un fichier? –