我有这个代码,它包含一个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”开头的行,而不先读取整行?
答案 0 :(得分:3)
要知道某行是否以“on”开头,您必须首先确定是否存在换行符。要做到这一点,你必须阅读整行。简而言之 - 否 - 如果不读取整个流,就无法从流中读取某些行。
如果你知道行的位置,你可以使用.skip()方法 - 但是这个实现可能只是读取了不想要的字节。