The advantage of BufferedReader seems to be the reduction of hard disc accesses. But how does that work?
Sure instead of reading every single byte, StreamBuffer reads a whole chunk of 1000 Bytes for example. But how can he do that?
On the hard disk all the bytes of a file are maybe not continuous, like in an array, but rather dispersed because a file is not written in one flush. But maybe the operating system always in advance reserves 1000 Bytes for a file and if that is consumed it will reserve another 1000 Bytes.
Who is managing what address each byte of a file corresponds on the hard drive?
Can you say to the hard disk drive controller give me 1000 Bytes of a file by just one read command?