首先,我想确保你知道不可能找出URI链接的文件类型,因为以结尾的链接可能会让你访问文件(对于URL来说尤其如此,由于符号链接和.htaccess文件),因此如果你想限制允许的文件类型,它不是一个坚如磐石的解决方案从URI获取真正的扩展名, 如果这是你当然要去的。因此,我假设您只是想知道基于其URI的文件具有什么扩展名,即使这不是完全可信的;.jpg
.exe
您可以使用下面的方法从任何URI,URL或文件路径获取扩展名。您不必使用任何库或扩展,因为这是基本的Java功能。此解决方案获取 URI 字符串中最后一个(句点)符号的位置,并创建一个从句点符号位置开始的子字符串,在 URI 字符串的末尾结束。.
String uri = "http://www.google.com/support/enterprise/static/gsa/docs/admin/70/gsa_doc_set/integrating_apps/images/google_logo.png";
String extension = uri.substring(uri.lastIndexOf("."));
上面的这个代码示例将从 URI 的变量中输出扩展名,请注意,扩展名中包含一个(句点),如果要收集没有前缀句点的文件扩展名,请将子字符串索引增加一个,如下所示:.png
extension
.
String extension = uri.substring(url.lastIndexOf(".") + 1);
使用此方法而不是正则表达式(其他人经常使用的方法)的一个优点是,这在提供相同结果的同时,资源成本要低得多,执行起来也要轻得多。
此外,您可能需要确保 URL 包含句点字符,请使用以下代码来实现此目的:
String uri = "http://www.google.com/support/enterprise/static/gsa/docs/admin/70/gsa_doc_set/integrating_apps/images/google_logo.png";
if(uri.contains(".")) {
String extension = uri.substring(url.lastIndexOf("."));
}
您可能希望进一步改进功能,以创建更强大的系统。两个示例可能是:
- 通过检查 URI 是否存在,或通过确保 URI 的语法有效(可能使用正则表达式)来验证 URI。
- 修剪扩展名以删除不需要的空格。
我不会在这里介绍这两个功能的解决方案,因为这不是首先要问的。
希望这有帮助!