MimeTypeMap无法为包含空格的文件名返回扩展名。

6

我正在尝试使用 android.webkit 包中的 MimeTypeMap.class 从文件中检索扩展名。

File file = new File(someUrl); 
String ext = MimeTypeMap.getSingleton()
.getFileExtensionFromUrl(file.getAbsolutePath());

如果文件名中包含空格,则file.getName()返回null或空字符串。

如何解决?


java.net.URLEncoder.encode(file.getAbsolutePath()) - anemomylos
2个回答

1
你可以尝试。
    public static String getMimeType(File file) {
            String extension = getExtension(file.getName());
            if (extension.length() > 0)
                return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.substring(1));

            return "application/octet-stream";
        }

public static String getExtension(String uri) {
        if (uri == null) {
            return null;
        }

        int dot = uri.lastIndexOf(".");
        if (dot >= 0) {
            return uri.substring(dot);
        } else {
            // No extension.
            return "";
        }
    }

getExtension() 来自哪里? - Francis Nduba Numbi
我知道我可以使用String来获取最后一个"."之后的子字符串,但在检查文件对象不是目录之后。这样做我就不需要MimeTypeMap!但MimeTypeMap是为此设置的。现在为什么它不接受空格呢? - Francis Nduba Numbi

-1

您可以使用:

ContentResolver cr = get ContentResolver();
String type = MimeTypeMap.getSingleton().GetExtensionFromMimeType( cR.getType(uri));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接