Во-первых, получение хеш-кода двух потоков не поможет - для вычисления хеш-кодов вам необходимо прочитать все содержимое и , выполняя некоторые простые вычисления во время чтения.Если вы сравниваете файлы побайтно или используете буферы, то вы можете остановить ранее (после того, как найдете первые два байта / блока), которые не совпадают.
Однако этот подход будет иметь смысл, если вынеобходимо сравнить MemoryStream
с несколькими файлами, потому что тогда вам нужно будет выполнить цикл по MemoryStream
только один раз (для вычисления хэш-кода) и выполнить цикл по всем файлам.
В любом случае,вам придется написать код, чтобы прочитать весь файл.Как вы упомянули, это может быть сделано либо побайтово, либо с помощью буферов.Считывание данных в буфер является хорошей идеей, потому что это может быть более эффективной операцией при чтении с жесткого диска (например, чтение буфера 1 КБ).Более того, вы можете использовать асинхронный метод BeginRead
, если вам нужно обрабатывать несколько файлов параллельно.
Сводка :
- Если вам нужно сравнить несколько файлов, используйте хэш-код
- Для чтения / сравнения содержимого одного файла:
- Считать 1 кБ данных в буфер из обоих потоков
- Проверить, есть ли разница (если да, выйти)
- Продолжить цикл
Выполните вышеописанные шаги асинхронно, используя BeginRead
, если вам нужно параллельно обрабатывать файлы муллипа.