2010-08-26 3 views
19

Neugierig, was der beste Weg in Java ist, um den MIME-Typ einer Datei zu erhalten. Es sollte die Datei tatsächlich untersuchen, da Dateinamen keine genauen Indikatoren sind.Die beste Methode, um den MIME-Typ einer Datei in Java zu bestimmen?

Derzeit verwende ich die folgenden, die sehr betroffen zu sein scheint oder

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

Noch glauben Ihr Weg ist für die meisten Fälle großartig. –

+0

Ich verwendete die Klasse, die als Antwort hier gepostet wurde: http://stackoverflow.com/a/10140531/293280 –

Antwort

23

Die URLConnection#guessContentTypeFromStream() oder ...FromName() tatsächlich fehlt, ist das Beste, was Sie in der Standard-Java-SE-API erhalten. Es gibt jedoch 3rd-Party-Bibliotheken wie jMimeMagic, die ihre Arbeit besser als URLConnection#guessXXX() Methoden macht.

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

Dies unterstützt eine größere Auswahl an Mime-Typen.

+0

danke! werde es versuchen – James

+0

Gern geschehen. – BalusC

+0

@BalusC Was können Sie zu dieser SO-Frage sagen? [Datei des MIME-Typs mit JMimeMagic überprüfen] (http://stackoverflow.com/questions/15325047/check-file-of-mime-type-with-jmimemagic)? –

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