Oi pessoal, sou novo por aqui e estou com uma dúvida que me parece até bem simples.
Existe alguma vantagem da classe BufferedReader sobre a classe Scanner quando utilizadas para ler arquivos (ou vice versa)?
Oi pessoal, sou novo por aqui e estou com uma dúvida que me parece até bem simples.
Existe alguma vantagem da classe BufferedReader sobre a classe Scanner quando utilizadas para ler arquivos (ou vice versa)?
Resumidamente, a diferença é: o Reader simplesmente lê o arquivo e te dá o conteúdo, caracter por caracter; Já o Scanner é uma ferramenta mais complexa capaz de “interpretar” o conteúdo, separando por delimitadores e convertendo para outros tipos (numérico, por exemplo).
Então a resposta para quando usar um ou outro é: depende do que você precisa. Se você quer ler o arquivo inteiro e guarda-lo na memória ou outro local, use o Reader, mas se quer processar os dados do arquivo enquanto lê provavelmente o Scanner será a melhor escolha.
Scanner:
Mais simples de usar
Permite vários tipos de sepadores (além da quebra de linha)
BufferedReader:
Mais rápida
Pode ser associada a vários tipos de readers
Use o segundo somente em casos onde vc tem muitos arquivos ou arquivos muito grande para ler. Na absurda maioria das vezes, o scanner será o mais adequado. Até porque, se vc realmente precisar de velocidade, provavelemente você vai preferir o FileChannel ao invés do BufferedReader.
O que é e como trabalha o FileChannel?
http://download.oracle.com/javase/1.4.2/docs/api/java/nio/channels/FileChannel.html
http://www.guj.com.br/articles/118
http://www.java2s.com/Tutorial/Java/0180__File/0420__FileChannel.htm
Obrigado a todos,
Após ver os materiais, escolhi o BufferedReader. Caso eu esteja equivocado, por favor me respondam.