Ответ 1
Быстрый поиск в Google (по общему признанию неочевидный) "обнаружение магического файла Java" вызывает довольно симпатичную статью "Получить MIME-тип из файла", в которой предлагается использовать одно из следующего:
Есть ли какая-либо java-библиотека, похожая на команду unix file
?
т.е.:
$ file somepicture.png
somepicture.png PNG image, 805 x 292, 8-bit/color RGB, non-interlaced
Команда файла - такой хороший инструмент. Мне нужно что-то, что может сказать мне, действительно ли файл, какой я хочу. (например, изображение, документ и т.д.)
Я знаю, что могу запустить команду file
, но я ищу java-библиотеку, не выполняющую действительную команду unix.
Быстрый поиск в Google (по общему признанию неочевидный) "обнаружение магического файла Java" вызывает довольно симпатичную статью "Получить MIME-тип из файла", в которой предлагается использовать одно из следующего:
Начиная с Java 1.7 вы можете использовать Files.probeContentType() для поиска файла. Вне коробки он использует механизм на платформе, чтобы угадать тип содержимого, или вы можете подключить свой собственный детектор, если хотите.
Вы можете посмотреть jmimemagic (учебник). Мы использовали его некоторое время для проверки загруженных изображений. На данный момент проблем нет.
Я не уверен, что это именно то, что вы ищете, но следующая ссылка может вам помочь:
Посмотрите mime-utils. Он работает с контентом и/или с расширением.
Ближайшая вещь в JDK URLConnection.guessContentTypeFromStream
Искал то же самое и нашел это: https://github.com/j256/simplemagic - похоже, это клон "файла", он даже использует копию файла, встроенную в волшебный файл.