Вы можете прочитать содержимое двоичного файла и сравнить байты, которые Вы получаете. Чтобы прочитать файл, вы можете либо использовать ReadAllBytes
(если файл имеет достаточный размер и будет удобно помещать в память), либо вы можете использовать FileStream
и читать фрагменты данных из обоих файлов.
Структура подхода с использованием буферов может выглядеть следующим образом:
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
}
Некоторые люди рекомендовали использовать хеши, но это не очень хорошая идея - если файлы одинаковы, вам нужно прочитать все данные из файла, поэтому вычисление хэшей не является более эффективным, чем просто чтение и сравнение всех данных. Однако, если файлы отличаются в первых байтах, вам нужно будет прочитать только первые несколько байтов (если сравнивать побайтовые байты)!
Хеши были бы полезны, если бы вы хотели сравнить несколько файлов (например, каждый из них).
Вы должны уточнить свой вопрос: с чем вы сравниваете двоичный файл?Является ли это еще одним двоичным файлом или является экземпляром в памяти класса, который должен или не должен быть сериализован для файла? –