首先,我想确保您知道无法找出URI链接到哪种类型的文件,因为以.jpg
结尾的链接可能会让您访问.exe
文件(这对于URL来说特别正确,因为符号链接和.htaccess文件),因此,如果您想限制允许的文件类型,从URI获取真实扩展名不是一个非常可靠的解决方案,当然,如果这是您想要的话。所以,我假设您只是想根据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("."))
以下代码示例将输出URI中.png
扩展名到extension
变量中,请注意扩展名中包括一个.
(句号)。如果您想获取没有前缀句号的文件扩展名,请将子字符串索引增加1,如下所示:
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。
- 修剪扩展名以去除不需要的空格。
我不会在这里讨论这两个特性的解决方案,因为这不是首要问题。
希望这可以帮到你!