scanner

What are the differences between InputStreamReader and Scanner in Java

I was aware of reading data by Scanner, i know superficially how it works, however I came across some examples using a class ... ing data. What are the differences between these approaches and if they are used for the same purpose, what is best and why.