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