使用java.net包下的URL類,可以將一個網頁(鏈接)封裝成一個URL對象。
URL對象有一個openStream()
方法,使用該方法可以獲取該網頁的輸入流,我們可以通過讀取輸入流的方式獲得網頁的內容,並通過輸出流寫入HTML文件中。
方式一:
使用此方法需要指定輸入流和輸出流的字符編碼,否則可能會出現亂碼
步驟:
1. 通過URL對象的openStream()
方法獲得網頁的字節輸入流
2. 將字節輸入流轉換成字符輸入流
3. 為字符輸入流加緩沖區
4. 定義一個字節輸出流
5. 將字節輸出流轉換成字符輸出流
6. 將讀取到的數據寫入文件
7. 關閉流
public void way_1() throws Exception { InputStream inputStream;//接收字節輸入流 InputStreamReader inputStreamReader;//將字節輸入流轉換成字符輸入流 BufferedReader bufferedReader;//為字符輸入流加緩沖 FileOutputStream fileOutputStream;//字節輸出流 OutputStreamWriter outputStreamWriter;//將字節輸出流轉換成字符輸出流 URL wangyi = new URL("http://www.163.com/"); inputStream = wangyi.openStream(); inputStreamReader = new InputStreamReader(inputStream, "gb2312"); bufferedReader = new BufferedReader(inputStreamReader); String s; File dest = new File("src/wangyi.html"); fileOutputStream = new FileOutputStream(dest); outputStreamWriter = new OutputStreamWriter(fileOutputStream, "gb2312"); while ((s = bufferedReader.readLine()) != null) { outputStreamWriter.write(s); } outputStreamWriter.close(); fileOutputStream.close(); bufferedReader.close(); inputStreamReader.close(); inputStream.close(); }
方式二:
使用此方法不需要指定輸入流和輸出流的字符編碼(因為是通過字節的方式)
步驟:
1. 通過URL對象的openStream()
方法獲得網頁的字節輸入流
2. 為字節輸入流加緩沖
3. 創建字節輸出流對象
4. 為字節輸出流加緩沖
5. 讀取數據,並寫入HTML文件
6. 關閉流
public void way_2() throws Exception{ File dest = new File("src/wangyi2.html"); InputStream is;//接收字節輸入流 FileOutputStream fos = new FileOutputStream(dest);//字節輸出流 URL wangyi = new URL("http://www.163.com/"); is = wangyi.openStream(); BufferedInputStream bis = new BufferedInputStream(is);//為字節輸入流加緩沖 BufferedOutputStream bos = new BufferedOutputStream(fos);//為字節輸出流加緩沖 int length; byte[] bytes = new byte[1024*20]; while((length = bis.read(bytes, 0, bytes.length)) != -1){ fos.write(bytes, 0, length); } bos.close(); fos.close(); bis.close(); is.close(); }