ファイルはUTF8テキストファイルです。オフセットがわかっている場合に大きなファイルから行を取得する方法
各文字にはさまざまなバイト数があり、各行の文字数はさまざまです。
vb.netには、行番号からバイト位置の関数などのテーブルがありますか?
また、それを読む方法は?
ファイルはUTF8テキストファイルです。オフセットがわかっている場合に大きなファイルから行を取得する方法
各文字にはさまざまなバイト数があり、各行の文字数はさまざまです。
vb.netには、行番号からバイト位置の関数などのテーブルがありますか?
また、それを読む方法は?
StreamReader
クラスは、ファイルの行単位の読み取りの一般的な選択です。ファイル内の読み込み履歴を保持していないため、最後の行がどこで終了したのか、次の行がどこにあるのかはわかりません。要求されたとき(ReadLine
経由)、新しい行の文字列またはファイルの終わりに達するまで文字を処理するだけです。
私はStreamReaderの実際の実装についてはわかりませんが、Encoding
クラスを使用してマルチバイトエンコーディングを処理し、読み込みパフォーマンスを向上させるための潜在的な事前読み込みデータの小さなバッファのみを保持していると仮定します今必要な10バイトよりも優れています)。現在の行の文字などの他のバッファは、それらを必要とするReadLine
のような関数へのローカルになります。
ランダムに検索する必要がある場合は、BaseStream
プロパティを使用して、自分自身の行開始のテーブルを生成し、そのストリームを目的の行の先頭に移動する必要があります。そこから、通常どおりReadLine
を使用できるはずです。
私は、streamreaderにオフセットプロパティがないことに気付きました。それはベースストリームがキックインする場所ですか?そう、私は –
+1と思われる行開始のテーブルが必要です。それはものです。わかった。 –