Как проверить тип файла, если в С# нет расширения?

Как проверить тип файла, если в С# нет расширения?

Например, у меня есть файлы без расширения в формате .mp4 или .flv (только без расширения). Я планирую преобразовать эти видеофайлы в аудиофайлы, однако я хотел бы определить тип файла, прежде чем начать его преобразование. Есть ли способ сделать это на С#?

Я подумал, что, может быть, я мог бы просто переименовать файл в name.mp4, а затем выполнить какую-то задачу над файлом, которая либо A) преуспеет, что означает, что файл действительно был .mp4, либо B) завершится ошибкой, и в этом случае я мог бы тогда переименуйте его в .flv

затем преобразуйте файл с соответствующим расширением. Есть ли в С# собственный процесс, который может просматривать свойства .mp4 или .flv? Я не хочу переименовывать файл в .mp4, а затем открывать его в стороннем приложении, например в проигрывателе Windows Media, чтобы проверить, правильно ли я его назвал.


person Thomas07vt    schedule 17.03.2012    source источник
comment
Как это пошло не так? Просто попросите того, кто переименовал файл, переименовать его обратно.   -  person Hans Passant    schedule 17.03.2012


Ответы (2)


Я слышал о чтении первых нескольких байтов содержимого файла и обоснованном предположении о формате файла. Эта ссылка кажется многообещающей:

Как с помощью .NET найти MIME-тип файла на основе подписи файла, а не расширения

person ToddBFisher    schedule 17.03.2012
comment
Спасибо! это как раз то, что я хочу. трудно найти что-то, когда ты не знаешь достаточно, чтобы сделать правильный поиск по ключевым словам, лол - person Thomas07vt; 17.03.2012

Я играл в эту утилиту (TrID - File Identifier) и кажется довольно точным. Пакет определения типа файла (TrIDDefs) также обновлен.

И Здесь приведен список таблиц сигнатур типов файлов, если вы интерес. Список находится в стадии разработки.

person Min Min    schedule 17.03.2012