首先,我想确保您知道不可能找出 URI 链接的文件类型,因为以 .jpg 结尾的链接可能会让您访问 .exe 文件(对于URL,由于符号链接和 .htaccess 文件),因此如果您想限制允许的文件类型,那么从 URI 获取 real 扩展名并不是一个可靠的解决方案,如果这是您'当然要去。所以,我假设您只是想知道基于文件 URI 的文件具有什么扩展名,即使这并不完全值得信赖;
您可以使用以下方法从任何 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("."));
上面的代码示例将从 extension 变量中的 URI 输出 .png 扩展名,请注意扩展名中包含 .(句点),如果您想收集不带前缀句点,子串索引加一,像这样:
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。
- 修剪扩展以删除不需要的空格。
我不会在这里介绍这两个功能的解决方案,因为这不是一开始就被问到的。
希望这会有所帮助!