Gravar conteudo em arquivo

6 respostas
J

Boa noite Desenvolvedores, estou tentando ler o conteudo de um arquivo e atribuir o seu valor ao atributo, apos atribuido quero incrementa-lo e apos isso gravalo novamente o valor ja incrementado no mesmo arquivo.
O codigo abaixo le o arquivo seqFicha.txt, ele armazenara uma sequencia automatica, tenho uma interface grafica com um botao(gerar ficha) a cada click, ele lè o conteudo, e atribui a um JTextField, porem atribui o valor ja incrementado.

public void seqFicha() throws FileNotFoundException, IOException{ 

    FileReader ler = new FileReader("/home/andresito/file/seqFicha.txt");
    try (BufferedReader n = new BufferedReader(ler)) {
          
        while(n.ready()){
            
            sequencia = Integer.parseInt(n.readLine()); //atribui o valor lido, ao atributo sequencia
            sequencia++; // incrementa o  atributo
        }
        n.close();
    }                
}

dpois de lido quero gravalo no msmo arquivo seqFicha.txt:

public void gravarSeqFicha() throws IOException{

    FileWriter gravar = new FileWriter("/home/andresito/file/seqFicha.txt");
    try (BufferedWriter s = new BufferedWriter(gravar)) {
        s.write(getgravficha());
        s.flush();
    }    
}

}

aqui esta o problema, ele le o arquivo, adiciona o valor ao atributo sequencia(classe CadPessoa()), porem na hora de gravar o valor nao vai.

me ajudem!!!

6 Respostas

E

Verifique se há algum conteúdo com a chamada de método getgravficha()

Esse link exemplificar bem como fazer uma escrita em um arquivo de texto :

Link

J

veja o codigo, alterei:
ESTES METODOS SAO DA CLASSE >> CadPessoa();

METODO PARA GRAVAR A SEQUENCIA DE FICHAS:
public void gravarSeqFicha() throws IOException{

sequencia++;
    //this.setgravficha(sequencia);
    /** somente para conferir o valor que esta atribuido ao atributo sequencia; **/
    System.out.println("metodo gravarficha - valor gravficha " + sequencia); 
          
    FileWriter gravar = new FileWriter("c:/java/seqFicha.txt");
    BufferedWriter s = new BufferedWriter(gravar);
    s.write(sequencia);
    s.flush();
    s.close();
    gravar.close();
    
}

METODO PARA LER SEQUENCIA DE FICHAS

public int seqFicha() throws FileNotFoundException, IOException{
  
    FileReader ler = new FileReader("c:/java/seqFicha.txt");
    try (BufferedReader n = new BufferedReader(ler)) {
         
        while(n.ready()){
            sequencia = Integer.parseInt(n.readLine());
            
        }
        n.close();
        ler.close();
    }        
    return sequencia; // este valor vai se atribuido ao um JTextField na classe FormCadPessoa();
   }

METODOS PARA GRAVAR DADOS RECUPERADOS DOS CAMPOS JTextField DA CLASSE FormCadPessoa();

METODO GRAVARDADOS()

public void gravarDados() throws IOException {
       File ca = new File("c:/java/cadPessoa.txt");
   try( FileWriter dados = new FileWriter(ca)){
       dados.write(nome + ";");
       dados.write(endereco + ";");
       dados.write(email + ";");
       dados.write(telefone + ";");
       dados.write(bairro + ";");
       dados.write(complemento + ";");
       dados.write(ficha);
       dados.flush();
       dados.close();
   }catch(IOException e){
   }
}

CLASSE FORMCADPESSOA();

metodo que ira ler o arquivo de sequencia fichas:

private void lerFichaActionPerformed(java.awt.event.ActionEvent evt) {                                         
    CadPessoa ler = new CadPessoa();//OBJETO PARA TER ACESSO A CADPESSOA
    try {
        ler.seqFicha(); // chamdno o metodo que ira ler o arquivo que contem a sequencia das fichas
    } catch (IOException ex) {
        Logger.getLogger(FormCadPessoa.class.getName()).log(Level.SEVERE, null, ex);
    }
    /**
     * aqui sera lido o conteudo do atributo sequencia, e passara como String
     * alterando o texto do campoFicha.
     */
    campoFicha.setText(String.valueOf(ler.sequencia));
    //ler.setgravficha(ler.sequencia);
}

Metodo q ira gravar a sequencia de ficha

private void gravarFichaActionPerformed(java.awt.event.ActionEvent evt) {                                            
    
    try {
        CadPessoa gravar = new CadPessoa();
        gravar.gravarSeqFicha();
    } catch (IOException ex) {
        Logger.getLogger(FormCadPessoa.class.getName()).log(Level.SEVERE, null, ex);
    }
}   


 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    
    CadPessoa teste = new CadPessoa(); // instanciamento de objeto da classe CadPessoa
    
    teste.setnome(campoNome.getText()); // recuperando valor do campoNome, e passando para o atributo nome da classe CadPessoa;
    teste.setemail(campoEMail.getText());
    teste.settelefone(campoContato.getText());
    teste.setendereco(campoEndereco.getText());
    teste.setbairro(campoBairro.getText());
    teste.setcomplemento(campoComplemento.getText());
    teste.setficha(campoFicha.getText());
            
    try {
        teste.gravarDados();
      
    } catch (IOException ex) {
        Logger.getLogger(FormCadPessoa.class.getName()).log(Level.SEVERE, null, ex);
    }

me ajudem aiiii, he pro meu PCC

E

Amigo porque você não utiliza xml, fica bem mais fácil a implementação, caso não vou tentar aqui com txt

E

Amigo você pode mandar o projeto para esse e-mail, porque ta complicado analisar assim

[email removido]

J

Acredito que para fazer a contagem de fichas, seria melhor você usar uma linha do arquivo de texto por ficha. Não sei se vai ser possivel você incrementar desse jeito que está fazendo.

Quando você faz
sequencia = Integer.parseInt(n.readLine());
sequencia++; // incrementa o atributo

Você não está trabalhando com o arquivo txt. A logica de uma linha por ficha talvez possa ajudar. Ate mais…

J

Maranata, encaminhei no seu e-mail,vlw brigadao

Criado 15 de maio de 2016
Ultima resposta 18 de mai. de 2016
Respostas 6
Participantes 3