簡體   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