
java.ioは、I/O系の機能群です。
Stream系とReader/Writer系のストリームがあります。
Streamの拡張には、FilterInputStream / FilterOutputStream を使います。
文字コード系のStreamクラスがReader/Writer系に分かれましたが、これは文字コードが一定であり、かつバイナリデータが存在しないと保証される場合以外は使うべきではありません。
このようなクラスが作られたことにより、日本語処理は大変混乱してしまっていると思います。