Boa noite, estou com uma duvida sobre como fazer para ler informações de um arquivo TXT e passar os valores para objetos a medida que cada linha do arquivo for lida.
ex: Eu tenho uma Classe produtos (bem ainda não foi toda definida), essa classe tem que receber apenas o nome do produto e o preço do arquivo TXT.
bem na minha classe do form tem o seguinte bloco:
BufferedReader entrada = new BufferedReader(new FileReader(arquivo));
String s;
while ((s = entrada.readLine())!= null){
ListaCestaBasica.add(s);
}
O ListaCestaBasica é um jList que coloquei apenas como teste…
oque eu quero é que para cada linha do arquivo lida, possa ser pego o nome do produto e o preço e automaticamente crie um novo objeto da classe produtos para cada linha do arquivo lida até chegar no final do arquivo…
Como posso fazer isso???
Desde já muito obrigado!
Use StringTokenizer, e organize um separador padrao para cada linha do arquivo. Digamos que cada produto tenha um nome simples, nao separados por espacos, e um valor de preco escrito como 1.00 para 1 real, voce poderia utilizar StringTokenizers com um separador " ", que separa a linha em tokens, onde os espacos são os delimitadores,
ex.: arquvo tem escrito
laranja 2.00
biscoito 1.25
feijao 0.99
o programa:
BufferedReader entrada = new BufferedReader(new FileReader(arquivo));
String s;
while ((s = entrada.readLine())!= null){
StringTokenizer tokens = new StringTokenizes(s);
String nome = s.nextToken();
double preco = Double.parseDouble(s.nextToken())
Produto produto = new Produto(nome, preco);
ListaCestaBasica.add(produto);
}
Aqui, o programa le cada linha do arquivo, separa por tokens (no caso 2 tokens), e atribui cada token a uma variavel, cria um Objeto Produto e adiciona à lista
Caso o nome do produto contenha espacos, tipo “suco de laranja”, utilize outro delimitador, como “$”, e coloque no arquvio: suco de laranja $1.00, entao crie um new StringTokenizer(s, “$”);
Valeu
Valeu Cara!
fiz do jeito que vc falou…
Na parte do seu codigo:
StringTokenizer tokens = new StringTokenizes(s, "$");
String nome = s.nextToken();
desse jeito não funcionou…
eu mudei para
String nome = token.nextToken();
foi isso que vc quiz dizer, não?
Muito obrigado cara! valeu mesmo!!!
Se voce digitar em uma linha: suco de laranja 1.00
Se voce separar em tokens com linha = new StringTokenizer(palavraLida) o delimitador vai ser os espacos (" "), ai seria o seguinte:
token1 = linha.nextToken(); // token1 = suco
token2 = linha.nextToken(); // token2 = de
token3 = linha.nextToken(); // token3 = laranja
token4 = linha.nextToken(); // token4 = 1.00
Ficaria dificil depois ter que ver se os tpkens separaou as palavras, e ter que juntar de novo etc.
Se voce digitar em uma linha do arquivo: suco de laranja $1.00 e separar com linha = new StringTokenizer(palavraLida, “$”), ocorreria o seguinte:
token1 = linha.nextToken(); // token1 = suco de laranja (o espaco entre laranja e $ é incluido aqui)
token2 = linha.nextToken(); // token2 = 1.00
Então não precisaria juntar depois os tokens, ja estaria dividido legal.
Mas ai depende do que você quiser fazer entende
Valeu()