Manipulação de Objetos em .txt

3 respostas
A

Boa noite pessoal!

Então preciso guardar um objeto Motorista dentro de um arquivo .txt e resgatá-lo depois, quando eu insiro apenas 1 motorista eu consigo regastá-lo, mas quando eu insiro novamente o motorista eu vejo que foi inserido outro no .txt mais eu só consigo resgatar apenas o primeiro motorista inserido(Metodo Consulta()).

Alguém poderia me ajudar? Pois preciso resgatar tudo que foi inserido no .txt

Classes do sistema:

package projetoviacao;

import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @author alexandre
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        ArrayList lista = new ArrayList();

        Motorista motorista;
       
        motorista = new Motorista();
        motorista.setCodigoMotorista(1);
        motorista.setNomeMotorista("NomeMotorista1");
        motorista.setRgMotorista("RG1");
        motorista.setCpfMotorista("CPF1");
        motorista.setDataNascimentoMotorista("data1");
        motorista.setCnhMotorista("CNH1");

        lista.add(motorista);


        MotoristaTXT txt = new MotoristaTXT();
        txt.GravarMotorista(lista);//cadastra o motorista no arquivo .txt

        Consulta();//consulta o motorista
    }

    public static void Consulta() {
        MotoristaTXT txt = new MotoristaTXT();
        //ler
        ArrayList lista2 = new ArrayList();
        lista2 = txt.LerMotoristaTXT();
                
        Iterator iterator = lista2.iterator();
        Motorista motorista;
        while (iterator.hasNext()) {
            motorista = (Motorista) iterator.next();

            System.out.println("Codigo: " + motorista.getCodigoMotorista());
            System.out.println("Nome: " + motorista.getNomeMotorista());
            System.out.println("RG: "+motorista.getRgMotorista());
            System.out.println("----");
        }

    }

    
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package projetoviacao;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author alexandre
 */
public class MotoristaTXT {

    public String fileName = "Motorista.txt";

    public void GravarMotorista(ArrayList lista) {
        //ArrayList lista = this.LerMotoristaTXT();
        //lista.add(motorista);
        try {
            // Serialize to a file
            ObjectOutput out = new ObjectOutputStream(new FileOutputStream("Motorista.txt", true));
            out.writeObject(lista);
            out.flush();
            out.close();
        } catch (IOException e) {
        }
    }

    public ArrayList LerMotoristaTXT() {
        ArrayList lista = new ArrayList();
        File file = new File(this.fileName);

        try {
            ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
            lista = (ArrayList) in.readObject();
            in.close();
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MotoristaTXT.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(MotoristaTXT.class.getName()).log(Level.SEVERE, null, ex);
        }

        return lista;
    }
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package projetoviacao;

/**
 *
 * @author alexandre
 */
public class Motorista implements java.io.Serializable {

    public int codigoMotorista;
    public String nomeMotorista;
    public String rgMotorista;
    public String cpfMotorista;
    public String cnhMotorista;
    public String datanascimentoMotorista;

    public Motorista() {
    }

    public String getCnhMotorista() {
        return cnhMotorista;
    }

    public void setCnhMotorista(String cnhMotorista) {
        this.cnhMotorista = cnhMotorista;
    }

    public int getCodigoMotorista() {
        return codigoMotorista;
    }

    public void setCodigoMotorista(int codigoMotorista) {
        this.codigoMotorista = codigoMotorista;
    }

    public String getCpfMotorista() {
        return cpfMotorista;
    }

    public void setCpfMotorista(String cpfMotorista) {
        this.cpfMotorista = cpfMotorista;
    }

    public String getDatanascimentoMotorista() {
        return datanascimentoMotorista;
    }

    public void setDataNascimentoMotorista(String datanascimentoMotorista) {
        this.datanascimentoMotorista = datanascimentoMotorista;
    }

    public String getNomeMotorista() {
        return nomeMotorista;
    }

    public void setNomeMotorista(String nomeMotorista) {
        this.nomeMotorista = nomeMotorista;
    }

    public String getRgMotorista() {
        return rgMotorista;
    }

    public void setRgMotorista(String rgMotorista) {
        this.rgMotorista = rgMotorista;
    }

    @Override
    public String toString(){
        return this.getNomeMotorista();
    }

}

3 Respostas

Isaias_Sousa_Alencar

Se eu entendi bem você quer inserir em um arquivo .TXT e depois resgata-lo. tenta usar no retorno o comando linha.Substring.
ela vai ler determinada linha e retornar somente com a informação nescessaria.
Abraços!!

D

Existe um framework que chama filehelper se não me engano,
ele pode te ajudar caso seu projeto esteja usando serialização.

A

Então pessoal estou usando igual esse link: http://www.guj.com.br/posts/list/122996.java#665364

com algumas alterações:

// Serialize to a file  
 ObjectOutput out = new ObjectOutputStream(new FileOutputStream("Motorista.txt", true));  //APPEND
 out.writeObject(lista);  
 out.flush();  
 out.close();

mais não consigo listar toda a lista inserida no .txt, acredito que seja alguma coisa que eu tenha deixado passar
de bobeira no código, alguem ja teve o mesmo problema?

Criado 20 de abril de 2010
Ultima resposta 20 de abr. de 2010
Respostas 3
Participantes 3