2011-11-22 47 views
2

我有這段代碼,其中包含一個BufferedReader並從網站讀取HTML數據。但是,我正在加載的網站中的每個頁面都包含600行HTML,因此每次都需要很長時間才能讀取數據。我希望通過不讀取以字母/單詞'on'開始的行(例如)來提高代碼的效率。這可以做到嗎?這是我的代碼:讓Android Http BufferedReader更高效?

public String getInternetData(String s) throws Exception { 
    BufferedReader in = null; 
    try{ 
     HttpClient client = new DefaultHttpClient(); 
     URI website = new URI(s); 
     HttpGet request = new HttpGet(); 
     request.setURI(website); 
     HttpResponse response = client.execute(request); 
     in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
     StringBuffer sb = new StringBuffer(""); 
     String l = ""; 
     String nl = System.getProperty("line.seperator"); 
     while(((l = in.readLine()) != null)){ 
      sb.append(l+nl); 
      } 
     in.close(); 
     return sb.toString(); 
    }finally{ 
     try { 
      if(in != null) { 
       in.close(); 
      } 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
} 

}

此代碼是完全有效的,並返回整個網頁的HTML的字符串。任何以「開」的方式過濾出行的方法,而無需先讀取整行?

回答

3

要知道一行以「on」開頭,您必須首先確定是否存在換行符。要做到這一點,你必須閱讀整條線。簡而言之 - 不 - 不讀取流中的某些行而不讀取整個流。

如果您知道可以使用.skip()方法的行的位置 - 但是這樣做的實現可能只是讀取不想要的字節。