This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
Or more generally: Readers and Writers work with character data and have a notion of a character encoding. The bytes in a file may not match exactly what you get back from a Reader, depending on the active character encoding. If you're working with non-ASCII text, you need to use these or you'll get wrong answers.
Streams, on the other hand, return you byte-for-byte what's in the file, and so are good for binary data with no encoding or translation.