Java MimetypesFileTypeMap始终在Android模拟器上返回应用程序/八位字节流

我正在尝试确定存储在 Android设备上的Mime / Media类型(实际上是与仿真器一起使用的虚拟设备).我发现这个资源 Get the MIME Type from a File推荐了javax.activation.MimetypesFileTypeMap,但是当我运行以下代码时,我获得所有文件类型的应用程序/八位字节流:
MimetypesFileTypeMap map = new MimetypesFileTypeMap();  
File dir = Environment.getExternalStorageDirectory();  
File[] files = dir.listFiles();  
String mimeType;  
for( int i = 0; i < files.length; ++i ) {  
    if( files[i].isDirectory() == false ) {  
        mimeType = map.getContentType(files[i]);  
        if( mimeType.toLowerCase().equals("application/octet-stream") ) {  
            Log.d("mytag",String.format( "Unable to determine the mime type of file %s.",files[i].getName()));  
        }   
    }  
}

我已经使用具有以下扩展名的文件进行了测试:jpg,txt,doc,xslx和pdf,它们都返回相同的事情.有什么我要做的,以初始化地图?这个库可以在Android上找不到支持的mime类型列表吗?有没有更好的方法来获得Android上的文件的MIME类型?

解决方法

还有这个问题.根据Java文档,MimetypesFileTypeMap搜索

>以编程方式将条目添加到MimetypesFileTypeMap实例.
>用户主目录中的文件.mime.types.
>文件/lib/mime.types
>名为Meta-INF / mime-types的文件或资源
>名为Meta-INF / mime-types.default的文件或资源(通常只在activation.jar文件中找到)

如果您的Mimetypes全部出现为“应用程序/八位字节流”,这意味着您没有上述任何文件存在(或者它们存在但不完整),并且没有向MimetypesFileTypeMap实例添加任何条目.

解决

MimetypesFileTypeMap mimetypes规格格式

# comments start with hash marks
# format is <mime type> <space separated file extensions>
# for example,for an image mime type and a text mime type
image png tif jpg jpeg bmp
text  txt text rtf TXT
# either place those lines within the files specified by 2-4 or

MimetypesFileTypeMap mtftp = new MimetypesFileTypeMap();
mtftp.addMimeTypes("image png tif jpg jpeg bmp")

# and it's as easy as that!

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写:&#160;一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...