熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

實例教程:Java Socket編程的一個秘密類[2]

2013-11-23 19:39:14  來源: Java核心技術 

  public String getDocumentAt(String urlString) {
   StringBuffer document = new StringBuffer();
   try {
    URL url = new URL(urlString);
    URLConnection conn = urlopenConnection();
    BufferedReader reader = new BufferedReader(new InputStreamReader(conngetInputStream()));
    String line = null;
    while ((line = readerreadLine()) != null)
    documentappend(line + \n);
    readerclose();
   } catch (MalformedURLException e) {
    Systemoutprintln(Unable to connect to URL: + urlString);
   } catch (IOException e) {
    Systemoutprintln(IOException when connecting to URL: + urlString);
   }
   return documenttoString();
  }

  getDocumentAt()方法有一個String類型的參數包含我們想得到的那份文檔的URL我們先創建一個StringBuffer用於保存文檔的行接著我們用傳進去的參數urlString來創建一個新的URL然後我們創建一個URLConnection並打開它

  URLConnection conn = urlopenConnection();

  一旦有了一個URLConnection我們就獲得它的InputStream並包裝成InputStreamReader然後我們又把它進而包裝成BufferedReader以至於我們能夠讀取從服務器獲得的文檔的行我們在java代碼中處理socket的時候會經常使用這種包裝技術在我們繼續學習之前你必須熟悉它

  BufferedReader reader =new BufferedReader(new InputStreamReader(conngetInputStream()));

  有了BufferedReader我們能夠容易的讀取文檔的內容我們在一個whileloop循環裡調用reader上的readline()方法

  String line = null;
  while ((line = readerreadLine()) != null)
  documentappend(line + \n);

  調用readLine()方法後從InputStream傳入行終止符(例如換行符)時才產生阻塞如果沒有得到它將繼續等待當連接關閉時它才會返回null既然這樣一旦我們獲得一個行我們連同一個換行符把它追加到一個調用的文檔的StringBuffer上這樣就保留了從服務器上原文檔的格式

  當我們讀取所有行以後我們應該關閉BufferedReader:

  readerclose();

  如果提供給urlString的URL構造器無效則將會拋出一個MalformedUR特拉LException異常同樣如果產生了其他的錯誤例如從連接獲取InputStream時將會拋出IOException

  總結

  .用一個你想連接的資源的有效的url String來實例化URL
  .連接到指定URL
  .包裝InputStream為連接在BufferedReader以至於你可以讀取行
  .用你的BufferedReader讀取文檔內容
  .關閉BufferedReader

[]  []  


From:http://tw.wingwit.com/Article/program/Java/hx/201311/27251.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.