Olá, Galera
Estou tendo um probleminha… estou utilizando a serialização para salvar objetos. Para gravar o objetos no arquivo ( alunos02.dat ) não estou tendo problemas.
O erro acontece quando tento ler o objeto do arquivo utilizando o método carregaAlunos().
public class GerenciadorArquivos {
private File arquivo;
FileOutputStream foStream;
FileInputStream fiStream;
ObjectOutputStream gravador;
ObjectInputStream leitor;
private int totalAlunos;
public GerenciadorArquivos(String nomeArquivo) throws FileNotFoundException {
arquivo = new File(nomeArquivo);
if (!arquivo.exists())
try {
arquivo.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
try {
this.fiStream = new FileInputStream(this.arquivo);
this.foStream = new FileOutputStream(this.arquivo,true);
gravador = new ObjectOutputStream(this.foStream);
leitor = new ObjectInputStream(this.fiStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public void salvaAlunos(Aluno[] alunos) {
for (Aluno a : alunos) {
try {
gravador.writeObject(a);
System.out.println("Aluno " + a.getNomeAluno() + " salvo.");
this.totalAlunos++;
gravador.flush();
} catch (IOException e) {
JOptionPane.showMessageDialog(null,
"Deu pau no método salvaAluno(Aluno[] alunos)");
e.printStackTrace();
}
}
}
public Aluno[] carregaAlunos() throws IOException {
Aluno[] alunos = new Aluno[this.totalAlunos];
int x = 0;
if (this.arquivo.exists()) {
while (x <= this.totalAlunos) {
try {
alunos[x] = (Aluno) this.leitor.readObject();
x++;
}
catch (IOException e) {
System.out.println("Exeção IO");
e.printStackTrace();
break;
} catch (ClassNotFoundException e) {
System.out.println("Exeção ClassNotFound");
e.printStackTrace();
break;
}
}
}
return alunos;
}
quando tento ler o arquivo é apresentado o seguinte erro:
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at GerenciadorArquivos.carregaAlunos(GerenciadorArquivos.java:126)
at Sistema.carregarSequencial(Sistema.java:60)
at Sistema.main(Sistema.java:26)
Se alguém puder dar uma dica, agradeço.
Abraços