假设我得到了一个 URI,并且我想找到返回文件的文件扩展名,我必须在 Java 中做什么。
例如,位于 http://www.daml.org/2001/08/baseball/baseball-ont 的文件是 http://www.daml.org/2001/08/baseball/baseball-ont.owl
当我做
URI uri = new URI(address);
URL url = uri.toURL();
String file = url.getFile();
System.out.println(file);
我看不到带有 .owl
扩展名的完整文件名,只是 /2001/08/baseball/baseball-ont
我如何获得文件扩展名。 ``
原文由 Ankur 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先,我想确保你知道不可能找出 URI 链接的文件类型,因为以
.jpg
结尾的链接可能会让你访问.exe
文件(由于符号链接和 .htaccess 文件,这对于 URL 尤其如此),因此如果您想限制允许的文件类型,那么从 URI 获取 真正的 扩展名并不是一个坚如磐石的解决方案,如果这就是您想要的当然要去。因此,我假设您只是想根据文件的 URI 知道文件的扩展名,即使这并不完全可靠;您可以使用以下方法从任何 URI、URL 或文件路径获取扩展名。您不必使用任何库或扩展,因为这是基本的 Java 功能。此解决方案获取 URI 字符串中最后一个
.
(句点)符号的位置,并创建一个从句点符号位置开始到 URI 字符串末尾结束的子字符串。上面的代码示例将从 --- 变量中的 URI 输出
.png
扩展名,注意.
extension
变量,如果包含在(句号)中你想收集没有前缀句点的文件扩展名,将子字符串索引增加一个,如下所示:在正则表达式(其他人经常使用的一种方法)上使用此方法的一个优点是,在给出相同结果的同时,这种方法的资源消耗要少得多,执行起来也轻得多。
此外,您可能希望确保 URL 包含句点字符,使用以下代码来实现此目的:
您可能希望进一步改进功能以创建更强大的系统。两个例子可能是:
我不会在这里介绍这两个功能的解决方案,因为这不是首先要问的问题。
希望这可以帮助!