Preciso capturar as informações de um arquivo txt, porem esse arquivo pode um livro de caracteres.
Como armazeno isso em uma String. Seria correto igual o código abaixo.
byte[] buffer = new byte[50000];
InputStream in = new FileInputStream(“arquivo.txt”);
in.read(buffer);
//Convertendo em uma String
String temp = new String(buffer).trim().toString();
Existe uma forma mais correta para armazenar um aquivo txt, quando eu não sei o seu tamanho porem sei que ele pode ter mais de 50000 caracteres.
Bom, a rigor um arquivo txt não deveria ser armazenado em uma única string, mas a maneira mais correta de fazer isso seria assim:
String str;
StringBuffer sb = new StringBuffer();
BufferedReader br = new BufferedReader (new FileReader ("arquivo.txt"));
for (String linha = br.readLine(); linha != null; linha = br.readLine())
{
sb.append (linha).append ("\n");
}
br.close();
str = sb.toString();
[quote=thingol]Bom, a rigor um arquivo txt não deveria ser armazenado em uma única string, mas a maneira mais correta de fazer isso seria assim:
String str;
StringBuffer sb = new StringBuffer();
BufferedReader br = new BufferedReader (new FileReader ("arquivo.txt"));
for (String linha = br.readLine(); linha != null; linha = br.readLine())
{
sb.append (linha).append ("\n");
}
br.close();
str = sb.toString();
[/quote]
Bom a rigor do rigor não deveríamos usar StringBuffer a menos que estivessemos com multiplas threads em execução, assim a maneira mais correta seria usar StringBuilder sb e sb.append();
Apenas explicando as opcoes dos colegas acima: um BufferedReader é uma classe que adotamos para a leitura de caracteres de um input stream, sendo que estes mesmos caracteres estarao no buffer agilizando a manipulacao dos dados, sendo assim, recomendado para uma entrada de dados com muita informacao. Já o StringBuffer tem uma desvantagem em relacao ao desempenho pois seus metodos sao sincronizados, tornando a manipulacao dos dados mais lenta, sendo assim, uma boa opcao é StringBuilder que possui os mesmo metodos que o StringBuffer .
[quote=Vini Fernandes] Apenas explicando as opcoes dos colegas acima: um BufferedReader é uma classe que adotamos para a leitura de caracteres de um input stream, sendo que estes mesmos caracteres estarao no buffer agilizando a manipulacao dos dados, sendo assim, recomendado para uma entrada de dados com muita informacao. Já o StringBuffer tem uma desvantagem em relacao ao desempenho pois seus metodos sao sincronizados, tornando a manipulacao dos dados mais lenta, sendo assim, uma boa opcao é StringBuilder que possui os mesmo metodos que o StringBuffer .
Abracao[/quote]
rsrsr
esse fórum é uma maravilha, tem sugestao, discussao e ate a explicação da discussao, para o problema de um colega.
[quote=a.gomes][quote=thingol]Bom, a rigor um arquivo txt não deveria ser armazenado em uma única string, mas a maneira mais correta de fazer isso seria assim:
String str;
StringBuffer sb = new StringBuffer();
BufferedReader br = new BufferedReader (new FileReader ("arquivo.txt"));
for (String linha = br.readLine(); linha != null; linha = br.readLine())
{
sb.append (linha).append ("\n");
}
br.close();
str = sb.toString();
[/quote]
Bom a rigor do rigor não deveríamos usar StringBuffer a menos que estivessemos com multiplas threads em execução, assim a maneira mais correta seria usar StringBuilder sb e sb.append();[/quote]
Tá bom, eu não tinha visto que era um StringBuffer - como costumo ver muita gente que é obrigada a usar Java 1.4 ou anterior, normalmente aconselho a usar StringBuffer mais por causa desse pessoal, já que a diferença de desempenho é desprezível nesse caso em particular (ler um arquivo).*
Desculpa esfarrapada - indicar StringBuffer e se esquecer do StringBuilder é coisa de gente que está com a cabeça no século passado, como eu