2017-01-03 2 views
0

Я работаю с 3-мя различными типами файлов (XML, CSV и JSON), и я не знаю, с кем я работаю в какой-то момент. Я попытался с некоторым кодом, скажем,Как узнать тип файла программным путем?

File file = new File("src/main/java/data" + "/molecules.xml"); 
final MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap(); 
System.out.println(fileTypeMap.getContentType(file.getName())); 

и возвращает application/octet-stream и он идет одинаково для .csv и .json файл, а также. Как получить правильный тип файла?

+3

Вы либо просмотреть файл [имя] окончаний (https://tika.apache.org/1.14/api/ org/apache/tika/detect/NameDetector.html), или вы пытаетесь определить тип по содержимому файла (например, [Apache Tika] (https://tika.apache.org/1.14/detection.html)). –

ответ

2

правильный тип MIME будет отображаться только если MimetypesFileTypeMap может соответствовать типу файла, используя один из этих ресурсов:

  1. Программным добавлены записи в экземпляре MimetypesFileTypeMap.
  2. Файл .mime.types в домашнем каталоге пользователя.
  3. Файл <java.home>/lib/mime.types.
  4. Файл или ресурсы с именем META-INF/mime.types.
  5. Файл или ресурс с именем META-INF/mimetypes.default (обычно находится только в файле activation.jar ).

Кратчайший решение использовать вариант # 1 с помощью addMimeTypes:

final MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap(); 
fileTypeMap.addMimeTypes("text/csv csv CSV"); 
fileTypeMap.addMimeTypes("application/json json JSON"); 
fileTypeMap.addMimeTypes("application/xml xml XML"); 
Смежные вопросы