Java lendo um arquivo diferentes métodos

Parece que existem muitas, muitas maneiras de ler arquivos de texto em Java (BufferedReader, DataInputStream etc.) O meu favorito pessoal éScanner com umFile no construtor (é mais simples, funciona melhor com o processamento de dados matemáticos e possui sintaxe familiar).

Boris, a Aranha, também mencionouChannel eRandomAccessFile.

Alguém pode explicar os prós e os contras de cada um desses métodos? Para ser específico, quando eu gostaria de usar cada um?

(editar) Acho que devo ser específico e acrescentar que tenho uma forte preferência peloScanner método. Então a verdadeira questão é, quandonão Eu quero usar isso?

questionAnswers(3)

yourAnswerToTheQuestion