例如,我想使用以下函数从文件 URL 获取文件扩展名:
文件名:
Greatest Hits - Lenny Kravitz (Booklet 01) [2000].jpg
文件的网址:
String url = "/mnt/sdcard/mydev/Greatest Hits - Lenny Kravitz (Booklet 01) [2000].jpg";
函数调用:
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
但我在函数调用时遇到异常。这是一个错误还是一个功能?
它适用于不包含太多外来字符(例如括号)的文件名。
功能有bug吗?我错过了什么吗?我该如何区分错误和功能?我已阅读功能说明,它应该可以正常工作。
您个人在项目中使用它吗?似乎没有reliable http://code.google.com/p/android/issues/detail?id=5510.
当我测试你的代码时,没有抛出任何异常。尽管没有返回正确的文件扩展名“jpg”。我不建议使用MimeTypeMap
。获取文件扩展名的简单方法如下:
String file = "/mnt/sdcard/mydev/Greatest Hits - Lenny Kravitz (Booklet 01) [2000].jpg";
String exten = "";
int i = file.lastIndexOf('.');
if (i > 0) {
exten = file.substring(i+1);
}
至于为什么MimeTypeMap.getFileExtensionFromUrl(url)
失败?它需要一个格式正确的 URL 字符串,但你的不是。您应该首先使用它进行编码URLEncoder
。例如:
String url = "/mnt/sdcard/mydev/Greatest Hits - Lenny Kravitz (Booklet 01) [2000].jpg";
url = URLEncoder.encode(url, "UTF-8");
This should allow MimeTypeMap.getFileExtensionFromUrl(url)
正常工作,但不幸的是它仍然不能正常工作。为什么?URLEncoder
会将所有空格更改为“+”号并且getFileExtensionFromUrl
认为这是一个无效字符。恕我直言,这部分是一个错误。
根据我的经验,大多数人不使用这种方法。事实上,在你提出这个问题之前我从未听说过它。可能是因为查找文件扩展名相当简单,并且大多数人编写的代码与我上面发布的代码类似。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)