As per your question for reading a text file you should use BufferedReader because Scanner hides IOException while BufferedReader throws it immediately.
BufferedReader is synchronized and Scanner is not.
Scanner is used for parsing tokens from the contents of the stream.
BufferedReader just reads the stream.