Ответ 1
Как отмечают некоторые комментаторы, универсального сопоставления 1:1 между mimetypes и расширениями файлов... Некоторые типы mimetypes имеют более одного возможного расширения, многие расширения разделяются несколькими типами mimetypes, а некоторые типы mimetypes не имеют расширение.
По возможности, вам намного лучше хранить mimetype и использовать это в будущем и забывать о расширении.
Тем не менее, если вы хотите получить наиболее распространенное расширение файла для заданного типа mimetype, то Tika - хороший способ пойти. Apache Tika имеет очень большой набор миметиков, о которых он знает, и для многих из них он также знает магию магии для обнаружения, общих расширений, описаний и т.д..
Если вы хотите получить наиболее распространенное расширение для файла JPEG, то, как показано в этот Apache Tika unit test, вам просто нужно сделайте что-нибудь вроде:
MimeTypes allTypes = MimeTypes.getDefaultMimeTypes();
MimeType jpeg = allTypes.forName("image/jpeg");
String jpegExt = jpeg.getExtension(); // .jpg
assertEquals(".jpg", jpeg.getExtension());
Главное, что вам нужно загрузить файл xml, который входит в банку Tika, чтобы получить определения всех типов mimetypes. Если вы, возможно, имеете дело с настраиваемыми типами mimetypes, то Tika поддерживает их и меняет одну строку:
TikaConfig config = TikaConfig.getDefaultConfig();
MimeTypes allTypes = config.getMimeRepository();
Используя метод TikaConfig для получения MimeTypes, Tika также проверит ваш путь к классам для пользовательских настроек mimetype и включит их.