JavaでBOM付きUTF-8を扱う

最近、BOM(Byte Order Mark)付きUTF-8で記述されたファイルをJavaで扱うことがあって気づいたのだけれども、JavaってUTF-8のBOMを読み飛ばしてくれないのな。で、ちょっと検索したらSDN(Sun Developer Network) の Bug Database に該当記述があった。

面倒なのできちんと読んでいないのだけども、Mustangで一度BOM付きUTF-8をきちんと扱えるようにしたけど、互換性の問題から元に戻されてて、これからも修正されることはないってことでいいのかな。
なんだそれ。ちくしょうめ。
なんか、コメント読むと jEdit は UTF-8Y なんてのを用意してAPI側で吸収しているらしいのだが、そういうのを Java API 側で追加するとかできないのかな。
とりあえずの次善策としては以下みたいな感じ。面倒だ。

InputStream fin = null;
Reader in = null;

try {
    fin = new FileInputStream(file);
    in = new InputStreamReader(fin, "UTF-8");
    StringBuilder buffer = new StringBuilder();
    int c;
    c = in.read();
    if (c != -1) {
        if (c != 0xFEFF) { buffer.append((char) c); }
        while ((c = in.read()) != -1) { buffer.append((char) c); }
    }
} finally {
    if (in != null) { 
        in.close();
    } else if (fin != null) {
        fin.close();
    }
}