txt - ¿La mejor manera de determinar el tipo mime de un archivo en java?
get mime type from file java (3)
El siguiente enlace tiene una buena comparación de varias formas de obtener el tipo Mime de un archivo (incluye bibliotecas como: Apache Tika, JMimeMagic, etc. con algún código nativo también): http://www.rgagnon.com/javadetails/java-0487.html
Esta pregunta ya tiene una respuesta aquí:
- Obtención del tipo Mime de un archivo en Java 18 respuestas
Es curioso cuál es la mejor forma en Java para obtener el tipo mime de un archivo. En realidad debería inspeccionar el archivo porque los nombres de archivos no son un indicador preciso.
Actualmente estoy usando lo siguiente que parece ser muy impredecible
is = new BufferedInputStream(new FileInputStream(fileName));
String mimeType = URLConnection.guessContentTypeFromStream(is);
if(mimeType == null) {
throw new IOException("can''t get mime type of image");
}
La URLConnection#guessContentTypeFromStream()
o ...FromName()
es realmente lo mejor que puede obtener en la API estándar de Java SE. Sin embargo, existen bibliotecas de terceros como jMimeMagic que funcionan mejor que los URLConnection#guessXXX()
.
String mimeType = Magic.getMagicMatch(file, false).getMimeType();
Esto soporta una gama más amplia de tipos mime.
public static String getContentType(String filename)
{
String g = URLConnection.guessContentTypeFromName(filename);
if( g == null)
{
g = MimetypesFileTypeMap.getDefaultFileTypeMap().getContentType(filename);
}
return g;
}