httpClientを使用してインターネットから開いたhtmlファイルからデータを読み込もうとしています。readLine()
読み取りのためにループ内の関数を使用しています。
読みたい行は500行目から。ファイルに配置するより速い方法はありますか?
問題は、不要なデータをすべて読み込むのに時間がかかりすぎることです (すべての読み込みが完了するまでに約 10 秒かかります)。
InputStream から、次を使用していくつかの文字をスキップできますskip(long n)
500行目に到達するには、499行の終了文字を交差させる必要があります(、、またはで終了する行を取得するgetline()
ため)。'\n'
'\r'
"\r\n"
線の定義が基本的な問題です。上記のターミネータ(ほとんどの言語の標準定義)を使用して行が終了するため、行をスキップするアルゴリズムの場合、アルゴリズムは行ターミネータn
を検出する必要があります。これは、ターミネータを見つけるために入力ストリームをn
調べる必要があることを意味します。これにより、文字をスキップすることはできますが、行をスキップすることはできないという結論に至ります。ここでスキップするということは、たとえば、データを(コードまたはライブラリコードのいずれかで)調べる必要がないことを意味します。ランダムアクセスファイルタイプまたはファイルストリーム操作。byte/char
byte/char
seek()
skip(n)
したがって、データ構造を再考したり、行をスキップする必要がある場合があります。