方法1:
使用 MimeTypeMap 类
- import java.util.Locale;
- private static String getSuffix(File file) {
- if (file == null || !file.exists() || file.isDirectory()) {
- return null;
- }
- String fileName = file.getName();
- if (fileName.equals("") || fileName.endsWith(".")) {
- return null;
- }
- int index = fileName.lastIndexOf(".");
- if (index != -1) {
- return fileName.substring(index + 1).toLowerCase(Locale.US);
- } else {
- return null;
- }
- }
- public static String getMimeType(File file){
- String suffix = getSuffix(file);
- if (suffix == null) {
- return "file/*";
- }
- String type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(suffix);
- if (type != null || !type.isEmpty()) {
- return type;
- }
- return "file/*";
- }
方法2:
确定媒体文件的情况下,使用MediaMetadataRetriever类。
- public static String getMimeType(String filePath) {
- MediaMetadataRetriever mmr = new MediaMetadataRetriever();
- String mime = "text/plain";
- if (filePath != null) {
- try {
- mmr.setDataSource(filePath);
- mime = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE);
- } catch (IllegalStateException e) {
- return mime;
- } catch (IllegalArgumentException e) {
- return mime;
- } catch (RuntimeException e) {
- return mime;
- }
- }
- return mime;
- }