2

我有这段代码,它包含一个 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”开头的行,而不先阅读整行?

4

1 回答 1

3

要知道一行是否以“on”开头,您必须首先确定是否有换行符。为此,您必须阅读整行。简而言之 - 不 - 如果不读取整个流,就不可能从流中读取某些行。

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

于 2011-11-22T19:39:35.230 回答