>>817
JDK 6.0 のソース、ちろっと見てみたけど
ファイル終端までくると CharsetDecoder#reset() 呼んでるんだわ。
で、 CharsetDecoder#reset() されると detectedCharset() の状態もリセットされるみたい。

そーいや、StreamDecoder のバグで CharsetDecoder#flush() 呼ぶべきところで
CharsetDecoder#reset() 呼ぶって奴があった記憶があるけど、これだったかも?