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

时间:2012-07-13 08:00:15

标签: android mime-types filenames 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();

这是正确的,但返回null,对于哪个文件有点" 。 " 的文件名。

示例

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

如果文件名在示例 27-05-2012 22.05.14.jpg 的名称中有点(。),则getMimeType()返回null。

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

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

2 个答案:

答案 0 :(得分:9)

这个怎么样:

File f = new File(file);
System.out.println(new MimetypesFileTypeMap().getContentType(f));

或者

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

答案 1 :(得分:1)

private String getMimeType(String url) {

    String fileExtension = MimeTypeMap.getFileExtensionFromUrl(url);
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
            fileExtension);
    Toast.makeText(
            this,
            "FileExtension: " + fileExtension + "\n" + "MimeType: "
                    + mimeType, Toast.LENGTH_LONG).show();
    return mimeType;
}

问题在于您的文件名之间有空格,请尝试使用此代码获取任何具有(“。”,“ - ”,“_”)等文件的mime类型...

尝试使用它甚至可行: 27-05-20 ..... 1222.05.14.jpg