繁体   English   中英

从 Java URL(文件:和 http/https 协议)中提取文件名?

[英]Extract file name from Java URL (file: and http/https protocol)?

我有各种这样的网址:

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

我可以编写一些自定义代码来检查斜杠,只是想知道是否有更好更健壮的方法来做到这一点?

URI class 正确解析 URI 的各个部分。 对于大多数 URL,您需要 URI 的路径 对于没有斜杠的 URI,不会对部分进行任何解析,因此您必须依赖整个特定于方案的部分

URI uri = new URI(b);
String path = uri.getPath();
if (path == null) {
    path = uri.getSchemeSpecificPart();
}
String filename = path.substring(path.lastIndexOf('/') + 1);

以上应该适用于您的所有网址。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM