Cはそこそこ、Javaはぜんぜんレベルです。

ファイルから読み込んだ文字列を処理したくて、
 BufferedReader in = new BufferedReader(new FileReader("foo.txt"));
 String str = in.readLine();
としていて、中身にも問題はないんですが、シークをしたいのに出来ません。
そこで、
 RandomAccessFile in = new RandomAccessFile("foo.txt", "r");
とすればin.seek()も可能になるんですが、System.out.printしてみると
多バイト文字が文字化けします。

BufferedReaderを使いつつもseekする方法か、
RandomAccessFileを使いつつも多バイト文字が化けない方法を教えて下さい。