Malheureusement,
mimeType = file.toURL().openConnection().getContentType();
ne fonctionne pas, car cette utilisation de l'URL laisse un fichier verrouillé, de sorte que, par exemple, il est indélébile.
Cependant, vous avez ceci :
mimeType= URLConnection.guessContentTypeFromName(file.getName());
et aussi la suivante, qui a l'avantage d'aller au-delà de la simple utilisation de l'extension de fichier, et de jeter un coup d'œil au contenu
InputStream is = new BufferedInputStream(new FileInputStream(file));
mimeType = URLConnection.guessContentTypeFromStream(is);
//...close stream
Cependant, comme le suggère le commentaire ci-dessus, le tableau intégré des types de mime est assez limité, n'incluant pas, par exemple, MSWord et PDF. Donc, si vous voulez généraliser, vous devrez aller au-delà des bibliothèques intégrées, en utilisant, par exemple, Mime-Util (qui est une excellente bibliothèque, utilisant à la fois l'extension de fichier et le contenu).
5 votes
Un bon aperçu des bibliothèques disponibles est donné à l'adresse suivante rgagnon.com/javadetails/java-0487.html
0 votes
J'ai utilisé le cours qui a été posté comme réponse ici : stackoverflow.com/a/10140531/293280
4 votes
Tika devrait être la réponse maintenant. Les autres réponses ci-dessous font état de nombreuses dépendances avec Tika, mais je n'en vois aucune avec tika-core.
0 votes
@javamonkey79 quand on utilise TIka, il couvre le fichier et il n'est plus utilisable. String contentType = tika.detect(is) .