What worked for me, was to just write down all the IO classes, and then just go to the API documentation on the Sun site and figure out the hierarchy myself, instead of copying out and trying to memorise someone elses chart.
You can also make a list of what constructors take what types of I/O classes. I made a tree similar to this:
OutPutStreamWriter(InputStream in,
String encoding)
|
|-> FileWriter(File f, or String s, opt. boolean append)
...etc.
I found that a lot simpler than going through chapters to figure out how it all works together. Once you've got it memorized in a form like this, then go through a chapter on it again, and you will learn a lot more!
Hope this helps!