Pessoal; estou com um problema para ler um arquivo que estou serializando.
Primeiramente o modelo de classes que eu salvo em arquivo:
[code]public class ControladoraWrapper implements Serializable {
private static final long serialVersionUID = 1L; //as sub entidades diretas também tem serialversion, mas abaixo destas nem todas.
private Date dataGeracao;
private Classe1 classe1;
private List<Classe2> classe2;
// mais algumas listas de classes, getters e setters.
}[/code]
Agora como que estou serializando o meu objeto:
[code] //populo o meu objeto anterior com todos os campos
wrapper.setDataGeracao(new Date());
String nomeArquivo = wrapper.getClasse1.getNome() + “_” + sdf.format(wrapper.getDataGeracao()) + “.bin”;
String arquivoCompleto = StringUtils.trim(StaticVars.TempPath) + “/” + StringUtils.trim(nomeArquivo);
ObjectOutputStream outputStream = null;
try {
outputStream = new ObjectOutputStream(new FileOutputStream(arquivoCompleto));
outputStream.writeObject(wrapper);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (outputStream != null) {
outputStream.flush();
outputStream.close();
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}[/code]
Finalmente como que eu importo esse arquivo para o sistema, já tentei fazer de diversas vezes, mas sempre encontro o mesmo erro, na mesma linha:
[code]String arquivo = “aaaaa.bin”;
try {
ObjectInputStream objectIn = null;
FileInputStream fileInputStream = new FileInputStream(arquivo);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
objectIn = new ObjectInputStream(bufferedInputStream); //aqui ocorre o erro
try {
Object object = objectIn.readObject();
ControladoraWrapper wrapper = (ControladoraWrapper) object;
System.out.println(wrapper);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace(); // chega nesta exception.
}
[/code]
O stack trace é :
java.io.StreamCorruptedException: invalid stream header: FFD8FFE0
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
// logs da aplicação e do tomcat.
Como eu coloquei, sempre tenho o mesmo erro quando vou nesse new ObjectInputStream(bufferedInputStream)
. Tem alguma outra forma de eu deserializar o meu objeto? Ou é algo que estou errando na hora de serializar? Fico agradecido desde já.