Arquivo TXT

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.

tente algo parecido com isso:

import java.io.BufferedReader;
import java.io.FileReader;

public class FileTeste {
	    public static void main(String[] args) throws Exception{
	    	BufferedReader buff = new BufferedReader(new FileReader("C:\\seuArquivo.txt"));
	    	String str = null;
	    	do{
	    		str = buff.readLine();
	    		System.out.println(str);
	    	}while(str != null);
	    }
}

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();

opa!

da uma pesquisada…
tem vários tópicos falando sobre isso…
inclusive, postei aqui uma vez uma classe simple para a manipilação de txtFiles

http://www.guj.com.br/posts/list/114205.java#617182

[]s

[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 .

Abracao

[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.

excelente Vini!!

eu adoro esse forum. rsrsr

Anderson Gomes.

[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 :frowning:

Então o código ficaria assim Vini?

String str;
[color=red]StringBuilder[/color] sb = new [color=red]StringBuilder();[/color]
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();
System.out.println(str);

É isso ai, galera!!

Abracao