(Buffered)Writerは、バイト単位じゃなくて文字単位の書き込みなので、
Writerでファイル(FileOutputStream)に直接4096ぴったり書き出すのはNG.
WriterとFileOutputStreamの間でバイト数を数えて、ファイルを切り替える処理がいるかと。
あたりまえだけど、文字の途中でファイルが分かれる場合があるけどいいんだよね?