java——Inetaddress類、URL類和URLConnection類
阿新 • • 發佈:2018-12-21
Inetaddress類
Inetaddress類可以用來表示IP地址,該類有兩個子類Inet4Address和Inet6Address,分別表示IPv4和IPv6。
注意:
Inetaddress類並沒有提供構造方法,但可以通過類中的以下靜態方法獲取Inetaddress類的例項:
getAllByName() | getByAddress() |
---|---|
getLocalHost() | getByName() |
Inetaddress類中的常用方法:
方法 | 作用 |
---|---|
String getHostAddress() | 返回IP地址字串 |
String getHostName() | 返回此IP地址的主機名 |
URL類和URLConnection類
URL類
URL類代表一個統一的資源定位符,它是指向網際網路“資源”的指標;資源可以是簡單的檔案或目錄,也可以是複雜的物件引用;每一個URL物件都分裝了資源識別符號和協議處理程式。獲得URL物件的方式有多種,一種是呼叫toURI()方法,一種是直接通過URL的構造方法建立物件。
常用方法:
方法 | 作用 |
---|---|
getFile() | 獲取此URL的檔名 |
getHost() | 獲取此URL的的主機名 |
getPath() | 獲取此URL的路徑部分 |
getPort() | 獲取此URL的埠號,若未設定,返回-1 |
getProtocol() | 獲取此URL的協議名稱 |
getQuery() | 獲取此URL的查詢部分 |
InputStream openStream() | 開啟此處的URL的連線,並返回一個用於從該處連線讀入的InputStream |
URLConnection openConnection() | 獲取URLConnection物件 |
URLConnection類
URLConnection類可以與URL建立動態的連線,同時使用URLConnection物件可以實現向伺服器傳送請求,將資料送回伺服器並檢查遠端資源的一些屬性;
一般建立URLConnection類的物件使用的是URL的 openConnection()方法;
方法 | 作用 |
---|---|
int getContentLength() | 獲取遠端資原始檔大小 |
String getContentType() | 獲取遠端資原始檔型別 |
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Scanner;
/**
* @ClassName TestDemo3
* @Description URL
* @Author lzq
* @Date 2018/12/8 18:39
* @Version 1.0
**/
public class TestDemo3 {
public static void main(String[] args) {
System.out.println("請輸入URL:"); //http://www.baidu.com
Scanner scanner = new Scanner(System.in);
String urlstr = scanner.next();
URL url = null;
try {
url = new URL(urlstr);
}catch (Exception e) {
e.printStackTrace();
}
System.out.println("主機:"+url.getHost());
System.out.println("路徑:"+url.getPath());
System.out.println("埠號:"+url.getPort());
System.out.println("協議:"+url.getProtocol());
System.out.println("使用者資訊:"+url.getUserInfo());
System.out.println("查詢組成:"+url.getQuery());
System.out.println("網頁內容:");
try {
InputStream in = url.openStream();
BufferedReader bin = new BufferedReader(new InputStreamReader(in));
String strLine = null;
while((strLine = bin.readLine())!= null) {
System.out.println(strLine);
}
bin.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
/**
* @ClassName TestDemo4
* @Description URLConnection類
* @Author lzq
* @Date 2018/12/8 18:51
* @Version 1.0
**/
public class TestDemo4 {
public static void main(String[] args) {
URL url = null;
URLConnection urlConnection = null;
try {
url = new URL("http://www.baidu.com/index.html");
urlConnection = url.openConnection();
}catch (Exception e) {
e.printStackTrace();
}
System.out.println("檔案大小:"+urlConnection.getContentLength());
System.out.println("檔案型別:"+urlConnection.getContentType());
try {
InputStream in = urlConnection.getInputStream();
BufferedInputStream bin = new BufferedInputStream(in);
FileOutputStream fout = new FileOutputStream("index.html");
int len = 0;
byte[] b = new byte[1024];
System.out.println("===下載頁面===");
while((len = bin.read(b,0,1024)) != -1) {
fout.write(b,0,len);
}
fout.close();
bin.close();
in.close();
System.out.println("===下載結束===");
}catch (Exception e){
e.printStackTrace();
}
}
}