1. 程式人生 > >java——Inetaddress類、URL類和URLConnection類

java——Inetaddress類、URL類和URLConnection類

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();
        }
    }
}

在這裡插入圖片描述