【问题标题】:Make Android Http BufferedReader more efficient?让 Android Http BufferedReader 更高效?
【发布时间】:2012-01-04 04:22:39
【问题描述】:

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

【问题讨论】:

    标签: java android http bufferedreader inputstreamreader


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 2019-09-21
      相关资源
      最近更新 更多