2016-06-07 3 views
0

У меня есть 12 мультимедийных файлов с короткой музыкой. Эти файлы как-то отличаются друг от друга, поскольку имеют все (я имею в виду одно содержимое файла от начала до конца) то же содержимое или различное содержимое.хороший способ сохранить разницу в файлах в памяти

Имена файлов:

  1. a1_same.wav // от начала до конца она содержит тот же контент
  2. a2_diff.wav // от начала до конца она содержит различное содержание
  3. a3_diff. WAV
  4. a4_diff.wav
  5. a5_same.wav ...... до 12

Сейчас я читаю все эти файлы и перебирать имя файла, чтобы отличить если содержимое же или дифф

// just a pseudo code - syntax may be wrong 
foreach(var file in abcCollection) 
{ 
    if(file.FilePath.Contains("Same")) 
    { 
     // then same 
    } 
    else 
    { 
     // different 
    } 
} 

Но я не доволен этим видом проверки с (проверка с именем файла строки для одинаковые или разные).

Есть ли другой способ сделать то же самое? Я имею в виду держать некоторые говорят, что первичный ключ в памяти или сохранение некоторых в словаре памяти или список и т.д. ... честно говоря, я не имею никакого понятия :-(

Если у вас есть какие-либо идеи, пожалуйста, поделитесь.

ответ

2

Вы могли используйте функцию хеширования, такую ​​как MD5, чтобы быстро найти, если физическое содержимое файлов одинаково.

Хеширующая функция принимает часть входных данных (содержимое файла) и запускает ее через повторяемый алгоритм, который всегда будет возвращать тот же значение при одинаковых входных данных, но будет возвращать другое значение, если входные данные каким-либо образом отличаются.

Этот метод обычно используется сайтами загрузки и распространителями контента, чтобы помочь загрузчику убедиться в том, что файл не был поврежден или изменен, поскольку они могут сравнивать хэш-значение полученного файла с опубликованным значением хэша, предоставленным файловым хостом.

EDIT: обратите внимание, что это зависит от того, что файлы двоичные равны, это не сравнение звука и не будет работать для файлов, которые содержат один и тот же аудиоклип, но имеют разное количество молчаливого ввода или вывода на начало и конец клипов, или если они были разными скоростями передачи битов или имели разные метаданные (теги MP3 и т. д.) в файле.

MD5 - Wikipedia, the free encyclopedia

+0

К сожалению, я думаю, что вы неправильно мой вопрос. Содержимое файла отличается или оно уже известно по его имени. Но где мне нужна помощь, это рефакторинг кода ниже кода: foreach (файл var в abcCollection) {if (file.FilePath.Contains («Same») {// то есть некоторая логика для тех же файлов} else {// logic for разные файлы}) – App

Смежные вопросы