lorsque j'utilise readObject I get OptionalDataException (Une tentative a été faite pour lire un objet lorsque l'élément suivant dans le flux est une donnée primitive), comment puis-je résoudre ce problème? La page est sérialisable. writeObject fonctionne.ObjectInputStream readobject ne fonctionne pas OptionalDataException
public Map<Long,Page<byte[]>> readAllPages(){
ObjectInputStream in = null;
try
{
in= new ObjectInputStream(new FileInputStream(HardDisk.getDefault_File_Name()));
@SuppressWarnings("unchecked")
Map<Long, Page<byte[]>> readMap = (Map<Long, Page<byte[]>>)in.readObject(); // exception here
return readMap;
}
catch(Exception ex)
{
ex.printStackTrace();
System.exit(0);
return null;
}
finally
{
if(in != null)
{
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void writeAllPages(Map<Long,Page<byte[]>> hd){
ObjectOutputStream out = null;
try
{
out = new ObjectOutputStream(new FileOutputStream(HardDisk.getDefault_File_Name()));
out.writeObject(hd);
}
catch(Exception ex)
{
ex.printStackTrace();
System.exit(0);
}
finally
{
if(out != null)
{
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Est-ce que 'Page' a des méthodes de lecture et/ou d'écriture personnalisées? –
que voulez-vous dire? Page a getter et setter, mais pas écrire ou lire des méthodes – user3537725
Êtes-vous en train de désérialiser les objets que vous avez sérialisés lorsque la classe 'Page' était différente? –