2010-11-20 9 views
0

特定の行からURLのHTMLページの行を読み込む必要があります。今のURLデータの特定の行を読み取るjava

、私は次のコードを持っている:

u = new URL("http://s.ll/message/" + counter); 

is = u.openStream(); // throws an IOException 

dis = new DataInputStream(new BufferedInputStream(is)); 

while ((s = dis.readLine()) != null) { 
    if (s.contains('%') 
     ... 
} 

私は、このコンテンツは、第50行の前にならないことを知っています。

どうすればこの行から読み込むことができますか?

URLを読むのが最も簡単ですか?

答えて

0

あなたは正しい軌道に乗っています。 URLからデータを読み取るには、最も簡単な方法はURLオブジェクトを使用することです。複雑なHTTP通信タスクの場合は、HTTPClientと考えるとよいでしょう。

使用しているメソッド DataInputStream.readLine()は、バイトから文字列への変換時に使用される文字セットを提供できないため、非推奨です。私はこのように行うだろう

u = new URL("http://s.ll/message/" + counter); 

is = u.openStream(); // throws an IOException 

// XXX notice the charset set to utf-8 here. 
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8")); 

while ((s = reader.readLine()) != null) { 
    if (s.contains('%') 
     ... 
} 

は、第50行を見つけるには、それにスキップする必要があります。ストリームへのバイトオフセットを知ることはできないので、Unix、Mac、またはWindowsの改行によって50番目の '\ n'(または '\ r'または '\ r \ n')は次のようになります。始まり。

3

どうすればこの行から読み込むことができますか?

カウントが50を下回るとラインを無視します。ストリームを読み取り、ラインをカウントする以外に、ライン50にまっすぐ進むことはできません。とにかくストリームを読み込む必要があります。

URLを読むのが最も簡単な方法ですか?

に依存します。しかし、より一般的なアプローチはBufferedReader + InputStreamReaderです。mojibakeを避けるために、ウェブページがエンコードされている文字セットを指定します。

+0

+1モチベーク! – systempuntoout

関連する問題