首先,我要確保你知道這是不可能找出什麼樣的文件的URI鏈接太多,因爲有.jpg
結尾的鏈接可能讓你訪問一個.exe
文件(這是特別對於URL,由於符號鏈接和.htaccess文件,因此它是真的),因此如果你想限制允許的文件類型,如果你想要的是這樣的話,它不是一個可靠的解決方案來從URI中獲取real擴展名當然。所以,我假設你只是想知道文件基於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
變量,注意,.
(週期)被包括在擴展,如果要收集的文件擴展名,而不預先固定的週期,由一個增加的子指數,就像這樣:
String extension = uri.substring(url.lastIndexOf(".") + 1);
使用了正則表達式這種方法(該方法的其他人使用了大量的)一個親的是,這是少了很多資源昂貴,而且少了很多重執行,同時給出相同的結果。
此外,您可能要確保網址中包含一段文字,可以使用下面的代碼來實現這一目標:
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的語法有效(可能使用正則表達式)來驗證URI。
- 修剪擴展程序以去除不需要的空白區域。
我不會在這裏介紹這兩個功能的解決方案,因爲這不是第一個問到的問題。
希望這會有所幫助!
如果URL在文件名或散列之後有一個問號,這將不起作用。 – 2015-07-08 14:44:50
您添加的那段時間字符檢查不會做任何非常有用的事情,因爲無論如何都有一段時間在頂級域名之前。 – 2017-02-17 15:37:01