Tenho um projeto Dicionario, para adicionar termos em uma interface com lista, só que preciso que esses dados listados na tabela sejam adicionado em um arquivo txt, como proceder?
d.setNumTermo(Integer.parseInt(tfdnumTermo.getText()));d.setTermo(tfdTermo.getText());d.setSignificado(tfdSignificado.getText());d.setFonte(tfdFonte.getText());if(cd.salvar(d)){JOptionPane.showMessageDialog(null,"Termo cadastrado com sucesso!");tfdnumTermo.setText("");tfdTermo.setText("");tfdSignificado.setText("");tfdFonte.setText("");tfdnumTermo.requestFocus();}else{JOptionPane.showMessageDialog(null,"Erro ao cadastrar o termo!");}d.listarTxt();}
//função que criei para listar no txt, ele lista somente o ultimo termo adicionado na table
Stringlinha=b.readLine();Stringusearray[]=linha.split(";");intnumTermo=usearray[0];//retorna erro sobre ser inttermo=usearray[1];significado=usearray[2];fonte=usearray[3];}catch(IOExceptione){}}
S
staroski
Usa o Integer.parseInt
D
DanielFiegenbaum
mesmo assim ele acaba não lendo as linhas do txt para listar no jtable.
S
staroski
No seu código você está lendo apenas uma linha do arquivo.
D
DanielFiegenbaum
estou usando o split para separar por “;” para cada coluna da lista pegar o valor separado por “,”
S
staroski1 like
Sim, mas imagino que seu arquivo contenha diversas linhas.
Cada objeto do tipo Dicionario você salva no arquivo como sendo uma nova linha, certo?
Entretanto você só faz um readLine(), ou seja, só está lendo a primeira linha do arquivo.
Eu se fosse você mudaria o nome da sua classe para Termo, pois é isso que cada instância dela representa, um termo e seu significado.
A classe Dicionario deveria encapsular uma lista de Termo, dessa forma, ao ler o seu arquivo, você iria carregar um List<Termo>, onde cada elemento do tipo Termo representa uma linha do seu arquivo.
D
DanielFiegenbaum
@staroski na verdade meu arquivo esta sendo salvo somente em uma linha e cada elementos separado por um “;” ex: 1;1;1… readLine() que usei seria pra ler essa linha toda, mas como faço para que o primeiro 1 vá para a coluna numeroTermo, segundo 1 vá para coluna termo etc…
Eu recomendo salvar cada registro em uma linha diferente, senão você vai ter que implementar uma forma de controle para ficar iterando cada x colunas.
D
DanielFiegenbaum
String texto = this.numTermo + “;” + this.termo + “;” + this.significado + “;” + this.fonte + “;”;
Já tentei usar o /n para quebrar linha mas sem sucesso, como consigo quebrar a linha?
Não consigor usar a variavel numTermo pq ela é int, e não entendi se eu terei que usar o nome da coluna ou uma variavel criada como esse numTermo, termo que estão definidas em outra classe!
Seu array é de String então tem que usar o Integer.parseInt para converter o elemento do seu array para int.
D
DanielFiegenbaum
//Ele esta em um loop infinito, e lendo somente a primeira linhapublicvoidlerTxt(){try{FileReaderf=newFileReader(“C:\Users\User\Documents\NetBeansProjects\MeuDicionario\arquivo.txt”);BufferedReaderb=newBufferedReader(f);
Dentro desse loop nunca estás a alterar o valor da tua variável linha, logo nunca vai sair do loop. Tens de ler a linha seguinte antes de verificar novamente se a (nova) linha é null.