BufferedReader を使用して、バイト ストリーム (UTF-8 テキスト) を 1 行ずつ読み取ります。特定の理由から、バイト ストリーム内の正確な行の開始位置を知る必要があります。
問題: BufferedReader にプラグインする InputStream の位置を使用できません。同様に、リーダーはバッファリングし、一度に複数の行を読み取ります。
私の質問:読み取った各行の正確なバイト オフセットを特定するにはどうすればよいですか?
(行 + "\n").getBytes("UTF-8").length. このアプローチには 2 つの問題があります。1) バイト数をカウントするだけで、文字列をバイトに変換するのはかなりのオーバーヘッドです。2) 改行は常に "\n" でマークされているとは限らず、"\ である可能性もあります。 r\n」など
これに対する他の解決策はありますか?
編集:これまでに見たすべての LineReader のようなクラスは、バッファリングされているようです。バッファリングされていない LineReader のようなクラスを知っている人はいますか?