如何获取文件的mime类型,在android上的文件名中有点

M.A*_*ali 0 filenames android mime-types android-file

我使用以下代码获取mime类型的文件:

    private String getMimeType(String url) {

        String type = null;
        String extension = MimeTypeMap.getFileExtensionFromUrl(url);
        Log.e("extension ", extension);

        if (extension != null) {
        MimeTypeMap mime = MimeTypeMap.getSingleton();
        type = mime.getMimeTypeFromExtension(extension);
        }
        return type;
    }

   where url is the absolute file path

    i am getting file and folder by the following way
    File file_arr [];
    file_arr = new   File(Environment.getExternalStorageDirectory().getPath()).listFiles();
    url = file_arr[i].getAbsolutePath();
Run Code Online (Sandbox Code Playgroud)

这是正确的,但它返回null,对于哪个文件在其文件名中有点".".

例如

如果文件名是picture1.jpg那么getMimeType()返回image/jpeg

在文件名的情况下,例子27-05-2012 22.05.14.jpg的名称中有点(.),则getMimeType()返回null.

我已将文件重命名为27-05-2012.jpg,其返回图像/ jpeg.

我的问题如何获取Android上所有类型的文件名(有点或特殊字符)的mime类型?请帮我.

Ark*_*ski 10

这个怎么样:

File f = new File(file);
System.out.println(new MimetypesFileTypeMap().getContentType(f));
Run Code Online (Sandbox Code Playgroud)

要么

   if(url.lastIndexOf(".") != -1) {
    String ext = url.substring(url.lastIndexOf(".")+1);
    MimeTypeMap mime = MimeTypeMap.getSingleton();
    String type = mime.getMimeTypeFromExtension(ext);
   } else {
    String type = null;
   }
Run Code Online (Sandbox Code Playgroud)