Подтвердить что ты не робот

Лучший способ определить тип mime файла в java?

Любопытно, что лучший способ в Java получить mime-тип файла. Он должен фактически проверять файл, потому что имена файлов не являются точным индикатором.

В настоящее время я использую следующее, которое кажется очень пораженным или пропущенным

  is = new BufferedInputStream(new FileInputStream(fileName));
  String mimeType = URLConnection.guessContentTypeFromStream(is);
  if(mimeType == null) {
    throw new IOException("can't get mime type of image");
  }
4b9b3361

Ответ 1

URLConnection#guessContentTypeFromStream() или ...FromName() является действительно лучшее, что вы можете получить в стандартном Java SE API. Однако существуют сторонние библиотеки, такие как jMimeMagic, который работает лучше, чем URLConnection#guessXXX().

String mimeType = Magic.getMagicMatch(file, false).getMimeType();

Это поддерживает более широкий диапазон типов mime.

Ответ 2

В следующей ссылке есть хорошее сравнение различных способов получения типа Mime файла (в него входят такие библиотеки, как Apache Tika, JMimeMagic и т.д. с некоторым собственным кодом): http://www.rgagnon.com/javadetails/java-0487.html

Ответ 3

    public static String getContentType(String filename)
    {
        String g = URLConnection.guessContentTypeFromName(filename);
        if( g == null)
        {
            g = MimetypesFileTypeMap.getDefaultFileTypeMap().getContentType(filename);
        }
        return g;
    }