Лучше всего будет взять первые несколько байтов из файла и проверить их на наличие шаблонов байт-мимов в различных форматах, которые вас интересуют.
Это то, что сделает Тикасделать для вас, когда вы попросите сделать обнаружение.Однако вы можете написать свой собственный код
. Возможно, можно передать поток каждому декодеру Commons Compress по очереди и предположить, что первый, который не сработает, это формат, но это может быть немногоненадежный ...
Я бы посоветовал вам придерживаться Tika, и для любого формата, который в данный момент не поддерживается Tika, откройте отчет об ошибке для обнаружения проблемы.Если вы можете, загрузите очень маленький тестовый файл, который можно использовать в модульном тесте, и, если возможно, тоже байты обнаружения магии.(Для формата, поддерживаемого компрессией commons, вы должны быть в состоянии найти детали заголовка в коде компрессии commons при необходимости)