Java ist auch eine Insel

Freitag, August 31, 2007

Java-Tipp: MIME-Type einer Datei (einfacher Weg)

public static String getMIMEType( File file )
{
 if ( !file.exists() )
  throw new IllegalArgumentException( "File does not exit!" );
 if ( file.isDirectory() )
  return "directory"
 try
 {
  return file.toURI().toURL().openConnection().getContentType();
 }
 catch ( IOException e )
 {
  throw new IllegalArgumentException( e.getMessage() );
 }
}

AddThis Social Bookmark Button

4 Comments:

  • Dieser Weg ist wirklich sehr einfach.

    Allerdings weiß ich nicht, wie ich die Connection nach dem Auslesen des MIME-Types wieder schließe.

    openConnection() führt anscheinend dazu, dass das entsprechende File blockiert wird und z. B. nicht mehr gelöscht werden kann, was in meinem Fall erforderlich wäre.

    Die Klassen URL und URLConnection bieten leider keine Methoden wie z. B. close() oder closeConnection() an :-(

    By Anonymous Stefan, at September 07, 2007 11:47 AM  

  • Oh. Darüber habe ich noch gar nicht nachgedacht. Wie wäre es, sich über die URLConnection auf der einen Seite über getContentType() den CT geben zu lassen, aber dann noch ein getInputStream(), der dann sofort wieder geschlossen wird?

    By Blogger Christian Ullenboom, at September 07, 2007 2:46 PM  

  • Stimmt, so funktioniert es :-)

    Allerdings scheint die Ermittlung des MIME-Types über eine URLConnection nicht in allen Fällen korrekt zu funktionieren.

    So werden z. B. MS Word oder PowerPoint-Dokumente als "content/unknown" erkannt, obwohl es dafür eine MIME-Definition gibt. Das mag aber an den Dateien selbst liegen.

    By Anonymous Stefan, at September 07, 2007 3:37 PM  

  • Daher auch "einfacher Weg". Es gibt auch andere Lösungen, etwa http://www.rgagnon.com/javadetails/java-0487.html. Man braucht aber was, was sich wirklich die ersten Bytes im Datenstrom anschaut.

    By Blogger Christian Ullenboom, at September 07, 2007 4:04 PM  

Kommentar veröffentlichen

<< Home