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

前端之家收集整理的这篇文章主要介绍了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!

猜你在找的Java相关文章