Buffered readers are preferable for more demanding tasks, such as file and streamed readers. Buffering the reads allows large volumes to be read from disk and copied to much faster RAM to increase performance over the multiple network communications or disk reads done with each read command otherwise. Java BufferedReader is preferable anywhere costly reads are likely to be an issue, such as FileReaders and InputStreamReaders, for example:
= new BufferedReader(new FileReader("foo.in"));
buffers the input from the file so that each read() or readLine() invocation does not individually cause reads from the file, reducing potential efficiency.
Java BufferedReader has existed since Java Development Kit 1.1.