Duvidas seriazable

3 respostas
C

Pessoal tem como carregar todos os objetos com o seriazable?no exemplo abaixo estou
salvando um objeto do tipo SeriazableTeste,porém estou salvando duas vezes esse arquivo só que ai ele sobrescreve o ultimo objeto salvo do tipo SeriazableTeste e acaba só trazendo a ultima informação.
tem como então não sobreescrever essas informações?
carregar todos objetos salvos usando o seriazable?

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class SeriazableTeste implements Serializable {
	private String nome;

	public SeriazableTeste(String nome) {
		this.nome = nome;
	}

	public static void main(String[] args) {
		SeriazableTeste o = null;
		SeriazableTeste objeto = new SeriazableTeste("Teste1");

		try {
			FileOutputStream fs = new FileOutputStream("arquivo.objeto");
			ObjectOutputStream os = new ObjectOutputStream(fs);
			os.writeObject(objeto);
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			FileInputStream fs = new FileInputStream("arquivo.objeto");
			ObjectInputStream os = new ObjectInputStream(fs);

			o = (SeriazableTeste) os.readObject();
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

	

		objeto = new SeriazableTeste("Teste2");

		try {
			FileOutputStream fs = new FileOutputStream("arquivo.objeto");
			ObjectOutputStream os = new ObjectOutputStream(fs);
			os.writeObject(objeto);
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			FileInputStream fs = new FileInputStream("arquivo.objeto");
			ObjectInputStream os = new ObjectInputStream(fs);

			o = (SeriazableTeste) os.readObject();
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		System.out.println(o.getNome());

	}

	public String getNome() {
		return nome;
	}

	public void setGato(String nome) {
		this.nome = nome;
	}
}

3 Respostas

alarangeiras

Olá Cléber,

Na verdade quando você só pode serializar um objeto de cada vez para um arquivo.
Mas por que não tenta adotar a seguinte estratégia?

Quando desejar serializar mais de um objeto do mesmo tipo no mesmo arquivo utilize uma Collection.
Algo como

import java.util.ArrayList;

public class ClasseASerializar implements Serializable {

             private ArrayList<Aluno> listaDeAlunos = new ArrayList<Aluno>();


             //código

}

Em outra parte do codigo vc vai serializar a classe ‘ClasseASerializar’ e juntamente com ela será serializada tbm a coleção com os seus objetos.
Não se esqueça que todos os objetos referenciados pela sua classe também precisam ser serializáveis.
No meu caso a classe ‘Aluno’ também precisa ser serializável ou vou obter uma NotSerializableException em tempo de execução

Espero ter ajudado

Abraços

C

tu queis que eu adiciono no arraylist o objeto lido?
achei meio confuso,tem como me moestrar um exemplo bem simples mesmo?
obrgado

LPJava

quando tiver serializando o objeto na construcao do arquivo coloque true apos e pronto tipo

FileWriter fw = new FileWriter( file, true)

qualquer coisa veja no javadoc a respeito… nao lembro se

FileOutputStream fs = new FileOutputStrea

aceita true, mais acredito que sim.

flw!

Criado 22 de novembro de 2008
Ultima resposta 26 de nov. de 2008
Respostas 3
Participantes 3