Java 標準庫 java.net 提供 URL 與 URLConnection 類,可輕鬆實現類似瀏覽器的網頁下載與資源元數據獲取,是構建自定義爬蟲、下載器或瀏覽器內核的基礎。
openConnection() 建立連接。connect()、getInputStream() 及豐富的元數據方法。import java.net.URL;
import java.net.URLConnection;
import java.io.*;
import java.util.Date;
public class UrlContentReader {
public void display() {
byte[] buf = new byte[1024];
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
System.out.print("請輸入文件的 URL 地址: ");
String addr = reader.readLine().trim();
URL url = new URL(addr);
URLConnection conn = url.openConnection();
conn.connect(); // 實際發起請求
// 顯示元數據
System.out.println("內容類型: " + conn.getContentType());
System.out.println("內容編碼: " + conn.getContentEncoding());
System.out.println("內容長度: " + conn.getContentLength());
System.out.println("創建日期: " + new Date(conn.getDate()));
System.out.println("最後修改: " + new Date(conn.getLastModified()));
System.out.println("過期日期: " + new Date(conn.getExpiration()));
// 讀取並輸出內容
try (InputStream in = conn.getInputStream();
BufferedInputStream bin = new BufferedInputStream(in)) {
int bytesRead;
while ((bytesRead = bin.read(buf)) != -1) {
System.out.write(buf, 0, bytesRead);
}
}
} catch (IOException e) {
System.err.println("讀取失敗: " + e.getMessage());
}
}
public static void main(String[] args) {
new UrlContentReader().display();
}
}
conn.setConnectTimeout(5000); conn.setReadTimeout(5000); (需轉型為 HttpURLConnection)。conn.setRequestProperty("User-Agent", "Mozilla/5.0"); 模擬瀏覽器。HttpURLConnection 預設自動跟隨,可用 setInstanceFollowRedirects(false) 關閉。TrustManager。Content-Type 解析 charset,缺失時預設 UTF-8。Range 請求頭)。