Como faço para ler um arquivo txt, e popular na Jtable no netbeans listando em cada coluna?

2 respostas
netbeansjava
D
// Listando na jtable

private void exibeDicionario(){

ArrayList meudicionario = cd.retornarTodos();
for (int i = 0; i < 10; i++){

tblDicionario.setValueAt("", i, 0);

tblDicionario.setValueAt("", i, 1);

tblDicionario.setValueAt("", i, 2);

tblDicionario.setValueAt("", i, 3);

}
for (int i = 0; i < meudicionario.size() && meudicionario.get(i) != null; i++){

tblDicionario.setValueAt(meudicionario.get(i).getNumTermo(), i, 0);

tblDicionario.setValueAt(meudicionario.get(i).getTermo(), i, 1);

tblDicionario.setValueAt(meudicionario.get(i).getSignificado(), i, 2);

tblDicionario.setValueAt(meudicionario.get(i).getFonte(), i, 3);

}

}
//Escrevendo no txt

public void listarTxt(){

Path path = Path.of(C:\Users\User\Documents\NetBeansProjects\MeuDicionario\arquivo.txt);

try {

if(Files.notExists(path)){

Files.createFile(path);

}

String texto = this.numTermo + ; + this.termo + ; + this.significado + ; + this.fonte + ; \n;

Files.writeString(path, texto, StandardOpenOption.WRITE, StandardOpenOption.APPEND);

} catch (IOException ex) {

java.util.logging.Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);

}

}
//Não consigo escrever no txt e ler clicando no listar, ele somente lista adicionando pela interface

public void lerTxt(){

try{

FileReader f = new FileReader(arquivo.txt);

BufferedReader b = new BufferedReader(f);

String linha = b.readLine();
String usearray[] = linha.split(";");

termo = usearray[1];

significado = usearray[2];

fonte = usearray[3];

} catch (IOException e){

}
}

//Botão salvar

private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {

// Botão salvar

Dicionario d = new Dicionario();
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();

}

2 Respostas

B

Para poder escrever, cria duas classes, uma classe que vai pegar os dados com um construtor e os método getter e setter
e a outra classe com um método que é o salvar.

Classe que terá um método para salvar:

public class Controle{
public void salvar(BufferedWritter bw, Cadastro c){
 try{ 
bw.write(c.getNome() + ";");
bw.write(c.getIdade() + ";\n");
} catch(Exception e){
e.getMessage();
}
}

Classe que terá o construtor e os métodos getter e setter:

public class Modelo{
// As variáveis de instâncias
private String nome;
private String idade;

// O construtor
public Modelo(String nome, String idade){
this.nome = nome;
this.idade = idade;
}

// Os métodos getter e setter
public String getNome(){
return nome;
}
public void setNome(String nome){
this.nome = nome;
}
public String getIdade(){
return idade;
}
public void setIdade(String idade){
this.idade = idade;
}

Por fim o código que vai dar a função de salvar, insere num botão:

try{

BufferedWritter conexao;
Modelo mdl = new Modelo(CampoDeTexto1_Nome.getText(), CampoDeTexto2_Idade.getText());

// Criação do arquivo txt
conexao = new BufferedWriter(new FileWriter("cadastro.txt", true));

// Instanciando a classe Controle
Controle ctl = new Controle ();
ctl.salvar(conexao, mdl);

conexao.close();

É mais ou menos isso para salvar.

D

Estou conseguindo escrever no arquivo dessa forma:

public void listarTxt(Dicionario d){
ArrayList meudicionario = new ArrayList<>();

Path path = Path.of("C:\\Users\\User\\Documents\\NetBeansProjects\\MeuDicionario\\arquivo.txt");
    try {
        if(Files.notExists(path)){
            Files.createFile(path);
        }
        String texto = this.numTermo + ";" + this.termo + ";" + this.significado + ";" + this.fonte + "; \n";
        Files.writeString(path, texto, StandardOpenOption.WRITE, StandardOpenOption.APPEND);
        
    } catch (IOException ex) {
        Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    }
     
}

Mas o meu problema é a leitura:

public void lerTxt(){

try{

FileReader f = new FileReader(arquivo.txt);

BufferedReader b = new BufferedReader(f);
Integer.parse(numTermo);
        String linha = b.readLine();
        String usearray[] = linha.split(";");
        
        while(linha != null){
            b.readLine();
        }

        tipoInt = usearray[0]; // ele é int e não consigo usar
        termo = usearray[1];
        significado = usearray[2];
        fonte = usearray[3];
        
    } catch (IOException e){
        
    }
}
Criado 6 de abril de 2022
Ultima resposta 6 de abr. de 2022
Respostas 2
Participantes 2