Possível duplicata:
como criar uma string Java a partir do conteúdo de um arquivo Arquivo de
texto inteiro para uma string em Java
Estou tentando ler o conteúdo de um arquivo usando o FileReader. Mas quero ler o arquivo sem ler linha por linha. É possível ler todo o arquivo sem loop. Estou usando o seguinte código
try
{
File ff=new File("abc.txt");
FileReader fr=new FileReader(ff);
String s;
while(br.read()!=-1)
{
s=br.readLine();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
Respostas:
Se o arquivo for pequeno , você pode ler todos os dados uma vez:
fonte
file.length()
pode retornar 0 para arquivos abaixo de/proc
. E, nesses casos, esse trecho retornará uma string vazia.read
pode não preencher todo o buffer. Pode funcionar na prática com a maioria dos JREs, mas não há garantia na API.Solução Java 7 de uma linha
ou
fonte
String text = Files.readString(Paths.get("file"));
é ainda mais curto, supondo que você queira uma saída de string UTF-8.file.toPath()
dentroreadAllBytes
Call requires API level 26: java.nio.file.Files#readAllBytes
- mesma coisa parareadString
.Você pode tentar usar o Scanner se estiver usando JDK5 ou superior.
Ou você também pode usar goiaba
fonte
String data = Files.toString(new File("path.txt"), Charsets.UTF_8);
. Apenas um pequeno erro de digitação. :-)Scanner
só lê os primeiros 1024 bytes do arquivo. Observe o código-fonte. Ele lê o buffer e o verifica com este regexp. Isso sempre é válido - então ele retorna todo o conteúdo do buffer. Por padrão, o buffer tem tamanho de 1024 bytes.Files.readAllLines()
. Para JREs legados,FileInputStream.read()
é provavelmente o melhor. Não tenho certeza se ele é portátil para todas as plataformas (ou seja, Ctl-Z é reconhecido em todos os lugares), e é fácil deixar de fazer umScanner.close()
.Se você estiver usando Java 5/6, poderá usar o Apache Commons IO para ler arquivo em string. A classe
org.apache.commons.io.FileUtils
contém vários métodos para ler arquivos.por exemplo, usando o método
FileUtils#readFileToString
:fonte
Desde o Java 11, você pode fazer isso de forma ainda mais simples:
Fonte: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Files.html#readString(java.nio.file.Path)
fonte