じゃないか、RandomAccessFile#readLine を使っただけか。

RandomAccessFile#readLine は Javadoc の説明によれば文字コードをまったく考慮しないようだから、ちゃんと文字コードの変換を通すようにしないと。
たぶん Channels#newReader を使うのが簡単っぽい。

RandomAccessFile ras = ......... ;
BufferedReader reader = new BufferedReader(Channels.newReader(ras.getChannel(), "Shift_JIS"));

シークしたときは Reader を作り直すことと、
多バイト文字の途中の位置にシークしてしまった場合は正しく読めないから、そういうことが起きないように気をつけること。