Arquivo TXT

9 respostas
rochribre

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.

9 Respostas

a.gomes

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);
	    }
}
T

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();
sf.marcius

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

a.gomes

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

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

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

a.gomes

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

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.

T

a.gomes:
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();

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

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:
rochribre

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

É isso ai, galera!!

Abracao

Criado 2 de fevereiro de 2009
Ultima resposta 3 de fev. de 2009
Respostas 9
Participantes 5