java ftp获取文件名的方法_小猿圈Java学习-URL地址的组成格式
URL的全稱是Uniform Resource Locator,意思是統一資源定位符,俗稱網絡地址或網址。網絡上的每個文件及接口,都有對應的URL網址,它規定了其他設備如何通過一系列的路徑找到自己,猶如網購的包裹一路送至收貨地址所描述的地點。現實生活中的通訊地址,一般遵循固定的格式,比如“××省××市××區××小區×××”;網絡地址也有相應的命名規則,比如新華網的首頁地址為“http://www.news.cn”,當然該地址比較簡單,還能造出更復雜的URL如“http://www.news.cn:8080/Public/GetValidateCode?time=123#index”(該網址純屬虛構)。雖然普通用戶平時上網只消打開網頁接著在各類鏈接之間跳來跳去,但是作為程序員必須弄清楚這些鏈接地址的格式涵義,這樣才能學好網絡通信的編程開發。仍以網址“http://www.news.cn:8080/Public/GetValidateCode?time=123#index”為例,該URL包含了網絡地址的各項組成部分,具體細節如下圖所示。
接下來對上圖的URL字符串補充詳細說明,從左到右依序介紹如下:
1、最開頭的http表示該地址采用的網絡協議,它的全稱是“Hypertext Transfer Protocol”,意思是超文本傳輸協議。除了http,常見的網絡協議還有https、ftp、file、telnet等等。
2、協議后面越過兩個斜桿,緊跟著的是該網址所在的域名,也叫主機名稱。這塊早已為大眾所熟知,除了新華網的http://www.news.cn,還有中央電視臺的http://www.cctv.com、人民日報的http://www.people.com.cn等等。
3、域名后面以冒號隔開的數字叫做端口號,像http協議默認的端口號是80。如果該網址采取默認的端口,就不必寫明端口數字;如果該網址使用了非默認的端口,比如http服務搭建在8080端口之上,就必須在URL中寫明8080。
4、域名加上端口號,組成了URL的授權部分,即網址的入口。
5、授權部分的右邊包括斜桿在內、問號之前的一長串字符,表示具體的網絡路徑,猶如操作系統里面的文件目錄。
6、問號之后、井號之前的部分,是以等號隔開的請求參數,各參數之間以“&”分隔,具體格式形如“參數A名稱=A參數值&參數B名稱=B參數值&參數C名稱=C參數值”。請求參數中的參數值允許變化,網絡服務將按照指定的數值返回相應的結果數據。
7、網絡路徑加上請求參數,組成了URL的文件名稱,有了文件名就能訪問該URL所表達的網絡資源。
8、井號之后的字串為引用位置,假設一個網頁很長很長,打開后默認顯示網頁的頂部,造成用戶下拉網頁找到某塊區域有點麻煩。而引用位置先給各區域做個編號,然后在URL末尾帶上該位置的編號,于是網頁打開后會自動滾到指定位置的區域,從而方便了用戶的瀏覽操作。
搞清楚了URL各段部分的作用,有助于后續的網絡編程工作。就網址訪問而言,Java提供了同名的網址工具URL,該工具類不偏不倚正好名叫URL,其構造方法的輸入參數即為網址字符串,此后的HTTP訪問操作皆有賴于URL對象。URL工具常用的方法包括但不限于下列幾種:
getProtocol:獲取URL對象采用的網絡協議。
getHost:獲取URL對象的域名(主機名稱)。
getDefaultPort:獲取URL對象的默認端口。http協議的默認端口號是80,ftp協議的默認端口號是21,https協議的默認端口號是443。
getPort:獲取URL對象的指定端口(若不顯式指定則返回-1)。
getAuthority:獲取URL對象的授權部門(由域名和指定端口組成)。
getPath:獲取URL對象的路徑(不包括域名)。
getQuery:獲取URL對象的請求參數。
getFile:獲取URL對象的文件名(由路徑和請求參數組成)。
getRef:獲取URL對象的引用位置。
openConnection:打開URL對象的網絡連接,并返回URLConnection連接對象。無論是接口調用,還是上傳下載,都依賴于這里的連接對象。
一個完整的網址字符串,包含了蠻多的地址信息,一個字符都錯不得。自然程序員很關心網址到底有哪些校驗辦法,可以支持判斷某個網址是合法請求還是非法請求。首先是域名的合法性校驗,Java提供了專門的網絡地址工具InetAddress,調用該工具的靜態方法getByName,能夠獲得指定域名的網絡地址對象,具體的方法調用代碼示例如下:
1
2
// 根據域名或IP獲得對應的網絡地址對象
InetAddress inet = InetAddress.getByName(host);
之后調用網絡地址對象的以下方法,即可獲取相應的網絡地址信息:
getHostAddress:獲取網絡地址對象的IP地址。
getHostName:獲取網絡地址對象的域名。
isReachable:檢查對方主機是否能連得上。但該方法不可靠,因為可能由于存在防火墻導致返回false。
可見盡管InetAddress提供了isReachable方法用于檢測域名的連通性,但該方法并不總能奏效。那么退而求其次,只要校驗域名的格式是否正確便行;這樣的話,在調用getByName方法之時,增加捕捉未知域名異常UnknownHostException;一旦捕捉到該異常,就認為當前域名是非法域名。此時域名的合法性校驗代碼變成了下面這樣:
// 測試域名的可用信息。返回true表示域名合法,返回false表示域名非法
private static boolean testHost(String host) {
try {
// 根據域名或IP獲得對應的網絡地址對象
InetAddress inet = InetAddress.getByName(host);
} catch (UnknownHostException e) { // 如果host字符串并非合法的域名/IP,則getByName方法會扔出“未知的域名異常”
e.printStackTrace();
return false; // 返回false表示該字符串不是合法的域名/IP
}
return true; // 返回true表示該字符串是合法的域名/IP
}
另一個值得注意的地方是請求參數中的參數值編碼,顯然URL格式存在部分保留字符,包括冒號、斜桿、問號、井號等等,這些字符不應直接出現在Query部分的參數值當中,故而需要對參數值里面的保留字符進行轉義。常見字符對應的URL轉義符如下圖所示:
除了保留字符以外,中文字符一樣需要轉義,比如“你”要轉為“%E4%BD%A0”。原始字符的轉義過程也稱作URL編碼,反過來則有反轉義過程,即將轉義后的字符恢復為原始字符,反轉義過程也稱作URL解碼。Java同時提供了對應的URL編碼工具URLEncoder,以及URL解碼工具URLDecoder,其中URL編碼的方法調用示例如下:
1
2
// 獲得URL編碼后的轉義字符串
String encoded = URLEncoder.encode(origin);
URL解碼的方法調用示例如下:
1
2
// 獲得URL解碼后的原始字符串
String origin = URLDecoder.decode(encoded);
好了 今天的分享就這么多,希望可以幫助到大家的學習,同時大家覺得不錯的話一定要推薦給身邊的朋友哦。
總結
以上是生活随笔為你收集整理的java ftp获取文件名的方法_小猿圈Java学习-URL地址的组成格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 切换root账号_Linux
- 下一篇: java钱_在Java中如何表示钱Mon