I find the idea of buffering as an optional optimisation theoretically nice but practically, not so much. I am sick of having to tell students "Java does not buffer by default, it is up to YOU to use BufferedReader and/or BufferedWriter if you do not want I/O to be catastrophically slow".