让Android Http BufferedReader更高效?

时间:2011-11-22 19:33:26

标签: java android http bufferedreader inputstreamreader

我有这个代码,它包含一个BufferedReader并从网站读取HTML数据。但是,我正在加载的网站中的每个页面都包含600行HTML,因此每次都需要很长时间才能读取数据。我希望通过不读取以字母/单词'on'开头(例如)的行来提高代码的效率。可以这样做吗?这是我的代码:

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的字符串。有没有过滤掉以“on”开头的行,而不先读取整行?

1 个答案:

答案 0 :(得分:3)

要知道某行是否以“on”开头,您必须首先确定是否存在换行符。要做到这一点,你必须阅读整行。简而言之 - 否 - 如果不读取整个流,就无法从流中读取某些行。

如果你知道行的位置,你可以使用.skip()方法 - 但是这个实现可能只是读取了不想要的字节。