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

问题描述 投票:0回答:2

我使用以下代码获取文件的 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();

这工作正常,但它对于文件名中带有点“.”的文件,它总是返回空。

举个例子

如果文件名是

picture1.jpg 那么 getMimeType() 返回 image/jpeg

如果文件名中包含点 (.),例如

27-05-2012 22.05.14.jpg,则 getMimeType() 返回 null。

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

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

android mime-types filenames android-file
2个回答
13
投票
这个怎么样:

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
投票
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

© www.soinside.com 2019 - 2024. All rights reserved.