2

BufferedReader を含み、Web サイトから 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(); 
        }
}

}

このコードは完全に機能しており、Web ページ全体の HTML を含む文字列を返します。最初に行全体を読み取らずに、「on」で始まる行を除外する方法はありますか?

4

1 に答える 1

3

行が「on」で始まるかどうかを知るには、最初に改行文字があるかどうかを確認する必要があります。これを行うには、行全体を読む必要があります。つまり、ストリーム全体を読み取らずに、ストリームから特定の行を読み取ることはできません。

行の位置がわかっている場合は .skip() メソッドを使用できますが、これを実装すると、不要なバイトを単純に読み取ってしまう可能性があります。

于 2011-11-22T19:39:35.230 に答える