I keep wanting to like Java, but they insist on everything being done the hard way compared to C#.
Sure, you want to provide a bunch of different readers, and let people put them together however you want.
But compare the example there of using a BufferedReader in a loop to read in a file, and compare to the equivalent in C# - File.ReadLines (which gives you an IEnumerable<string>) or even File.ReadAllLines (which gives you a string[]). 99% of the time that's all you want, and yet Java makes you do the work yourself rather than just giving you a utility method.