Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MimetypesFileTypeMap始终在Android emulator上返回应用程序/八位字节流_Java_Android_Mime Types - Fatal编程技术网

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

Java MimetypesFileTypeMap始终在Android emulator上返回应用程序/八位字节流,java,android,mime-types,Java,Android,Mime Types,我正在尝试确定存储在Android设备上的文件的Mime/媒体类型(实际上是我与emulator一起使用的虚拟设备)。我找到了这个资源,它推荐了javax.activation.MimetypesFileTypeMap,但是当我运行以下代码时,我得到了所有文件类型的application/octet-stream: MimetypesFileTypeMap map = new MimetypesFileTypeMap(); File dir = Environment.getExternal

我正在尝试确定存储在Android设备上的文件的Mime/媒体类型(实际上是我与emulator一起使用的虚拟设备)。我找到了这个资源,它推荐了
javax.activation.MimetypesFileTypeMap
,但是当我运行以下代码时,我得到了所有文件类型的
application/octet-stream

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()));  
        }   
    }  
}  
MimetypesFileTypeMap=new MimetypesFileTypeMap();
File dir=Environment.getExternalStorageDirectory();
File[]files=dir.listFiles();
字符串模拟类型;
对于(int i=0;i

我已经用以下扩展名的文件测试过了:jpg、txt、doc、xslx和pdf,它们都返回相同的结果。我需要做些什么来初始化地图吗?这个库在Android上找不到支持的mime类型列表吗?有没有更好的方法在Android上获取文件的mime类型?

也有这个问题。根据Java文档,MimetypesFileTypeMap进行搜索

  • 以编程方式将条目添加到MimetypesFileTypeMap实例
  • 文件.mime.types位于用户的主目录中
  • 文件/lib/mime.types
  • 名为META-INF/mime类型的文件或资源
  • 名为META-INF/mime-types.default的文件或资源(通常仅在activation.jar文件中找到)
  • 如果您的mimetype都显示为“application/octet stream”,这意味着您没有上述文件(或者它们存在但不完整),并且没有向MimetypesFileTypeMap实例添加任何条目

    解决

    mimetypes文件类型映射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!
    
    #注释以散列标记开头
    #格式是
    #例如,对于图像mime类型和文本mime类型
    图像png tif jpg jpeg bmp
    文本文本rtf文本
    #将这些行放在2-4指定的文件中,或
    MimetypesFileTypeMap mtftp=新的MimetypesFileTypeMap();
    mtftp.addMimeTypes(“图像png tif jpg jpeg bmp”)
    #就这么简单!
    
    我也有同样的问题(不涉及android),请参见此链接。我认为我们需要添加一个包含完整mime类型列表的ReSurce文件,但尚未尝试。然而,根据MimetypesFileTypeMap文档,确切的文件格式如下:**text/plain txt text txt**(抱歉,我无法格式化此文件。:()