【发布时间】:2021-11-17 19:27:14
【问题描述】:
我有各种这样的网址:
String a = "file:./bla/file.txt"; // Valid, see See [RFC 3986][1], path - rootless definition
String b = "file:.file.txt"; // Valid, see See [RFC 3986][1], path - rootless definition
String c = "file:./file.txt"; // Valid, see See [RFC 3986][1], path - rootless definition
String d = "file:///file.txt";
String e = "file:///folder/file.txt";
String f = "http://example.com/file.txt";
String g = "https://example.com/file.txt";
这些都是有效的 URL,我可以将它们转换为 java 中的 URL 而不会出错:
URL url = new URL(...);
我想从上面的每个示例中提取文件名,所以我只剩下:
file.txt
我尝试了以下方法,但这不起作用,例如上面的b(这是一个有效的 URL):
b.substring(path.lastIndexOf('/') + 1); // Returns file:.file.txt
我可以编写一些自定义代码来检查斜杠,只是想知道是否有更好更健壮的方法来做到这一点?
【问题讨论】:
-
你可以使用 Path.of(urlstring).getFileName();
-
@MirekPluta 谢谢,但这不起作用例如 b
-
即使 URI 类也无法解析它。它不能是正确的 URI,否则你会发现 JDK 中的错误
-
示例 b 不代表当前目录中的隐藏文件吗?即
./.file.txt我不希望文件名是file.txt