Leitura de um ficheiro de texto simples em Java
Parece que existem diferentes maneiras de ler e escrever dados de arquivos em Java.
Eu quero ler dados ASCII de um arquivo. Quais são as formas possíveis e suas diferenças?
899
3
Minha maneira favorita de ler um pequeno arquivo é usar um BufferedReader e um StringBuilder. É muito simples e directo (embora não seja particularmente eficaz, mas suficientemente bom para a maioria dos casos):
Alguns apontaram que depois do Java 7 você deve usar try-with-resources (i.e., fecho automático) características:
Quando eu leio cordas como esta, eu geralmente quero fazer algum manuseio de cordas por linha de qualquer maneira, então eu vou para esta implementação.
Embora se eu quiser realmente apenas ler um arquivo em uma String, eu sempre uso o Apache Commons IO com o método IOUtils.toString() da classe. Você pode dar uma olhada na fonte aqui:
http://www.docjar.com/html/api/org/apache/commons/io/IOUtils.java.html
E ainda mais simples com Java 7:
ASCII é um arquivo TEXT para que você utilize
Readers
para a leitura. Java também suporta a leitura de um arquivo binário utilizandoInputStreams
. Se os arquivos sendo lidos são enormes, então você gostaria de utilizar umBufferedReader
em cima de umFileReader
para melhorar a performance de leitura.Aceda este artigo sobre como utilizar um 'Leitor'.
Eu também recomendo que você baixe e leia este livro maravilhoso (porém gratuito) chamado **Thinking In Java***
**Em Java 7***:
(docs) ou
8
**Em Java 8***:
9
A maneira mais fácil é utilizar a classe
Scanner
em Java e o objeto FileReader. Exemplo simples:O "scanner" tem vários métodos de leitura em cordas, números, etc... Você pode procurar mais informações sobre isso na página de documentação Java.
Por exemplo, ler todo o conteúdo em um 'String':
Também se você precisar de uma codificação específica, você pode utilizá-la ao invés de
FileReader
: