2015-07-19 1 views
0

Я пытаюсь получить тип пантомимы файла без расширения с помощью:Получение файлов мим типов

File file = new File("C:\\Users\\user\\Desktop\\a.txt"); 
    File file1 = new File("C:\\Users\\user\\Desktop\\folder\\a"); 

    MimetypesFileTypeMap mimeTypesMap = new MimetypesFileTypeMap(); 

    // only by file name 
    String mimeType = mimeTypesMap.getContentType(file1); 

Тип мим файла a.txt является текст/равнина, которая является правильным, Но тип пантомимы file1 это приложение/октет-поток.

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

Я использовал сторонний инструмент, такой как Tika, но я не хочу его использовать, так как он сильно конфликтует с моим приложением.

ответ

0

Tika использует два способа определения типа файла. Первый способ основан на расширении файла, он сравнивается с типами файлов, которые поддерживаются Tika. Второй способ - «волшебный детектор». Он анализирует байт файла, ищущего шаблон.

Если ваш файл не предоставляет расширение и не имеет магического обнаружения, вы получаете приложение mimetype по умолчанию/октет-поток.

Магическое обнаружение не поддерживается Java SE из коробки.

+0

Я знаю о tika, но я не могу использовать его из-за проблем с зависимостями, спасибо – test

+0

Вы всегда можете использовать Tika в качестве сервера и потреблять его через REST. http://stackoverflow.com/questions/12231630/how-to-use-tika-in-server-mode http://wiki.apache.org/tika/TikaJAXRS#Detector_Resource – Ezequiel

+0

Тика не вариант в моем случае – test

0

Если вы используете Java7, для получения типов MIME существует реализация по умолчанию: - Files.probeContentType(path).

+0

сначала я использую java 6, и я проверил ту же проблему с java 7 и получил нуль, – test

+0

Это хороший расширяемый механизм в Jasa 7 до обнаруживать mymetype, но по умолчанию он использует только FileDetector для реализации SO. Поэтому он запрашивает SO для этого расширения файла, чтобы получить mimetype. Проблема в том, что это означает, что он зависит от платформы, чтобы получить тип mimetype, и обнаружение основано на расширении. @test вам нужно «волшебное обнаружение» для вашего дела. Tika может быть установлена ​​в качестве детектора файлов для использования этой функции Java 7 (я знаю, что вы этого не хотите, но я буду единственным способом, я думаю). – Ezequiel

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

  • Нет связанных вопросов^_^