例如,我想使用以下函数从文件URL获取文件扩展名:
文件名:
Greatest Hits - Lenny Kravitz (Booklet 01) [2000].jpg
Run Code Online (Sandbox Code Playgroud)
文件的网址:
String url = "/mnt/sdcard/mydev/Greatest Hits - Lenny Kravitz (Booklet 01) [2000].jpg";
Run Code Online (Sandbox Code Playgroud)
功能调用:
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
Run Code Online (Sandbox Code Playgroud)
但我在函数调用上遇到异常.这是一个错误还是一个功能?
它适用于不包含许多外来字符(例如paranthesis)的文件名.
功能是否有问题?我错过了什么吗?我该如何区分错误和功能?我已经阅读了功能描述,它应该正常工作.
你个人在你的项目中使用它吗?它似乎不可靠.
Jay*_*yer 26
当我测试你的代码时,我没有抛出任何异常.虽然没有返回正确的文件扩展名"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);
}
Run Code Online (Sandbox Code Playgroud)
至于为什么MimeTypeMap.getFileExtensionFromUrl(url)
失败?它期望一个正确格式化的URL字符串,而不是你的.您应该首先使用编码URLEncoder
.例如:
String url = "/mnt/sdcard/mydev/Greatest Hits - Lenny Kravitz (Booklet 01) [2000].jpg";
url = URLEncoder.encode(url, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
这应该允许MimeTypeMap.getFileExtensionFromUrl(url)
正常工作,但不幸的是它仍然没有.为什么?URLEncoder
将所有空格更改为"+"符号并将其getFileExtensionFromUrl
视为无效字符.这部分,恕我直言,是一个错误.
根据我的经验,大多数人不使用这种方法.事实上,在你发布这个问题之前,我从来没有听说过.可能是因为查找文件扩展名相当简单,大多数人都会编写类似于我上面发布的代码.
归档时间: |
|
查看次数: |
4990 次 |
最近记录: |