2016-04-20 1 views
0

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(); 
       } 
      } 
     } 
    } 
+0

Est-ce que 'Page' a des méthodes de lecture et/ou d'écriture personnalisées? –

+0

que voulez-vous dire? Page a getter et setter, mais pas écrire ou lire des méthodes – user3537725

+0

Êtes-vous en train de désérialiser les objets que vous avez sérialisés lorsque la classe 'Page' était différente? –

Répondre

0

Le problème était que la classe qui a la méthode de lecture étend ObjectInputStream donc je ne doit pas créer aussi le « dans » l'objet, je l'ai effacé et échangé avec « ceci » et le problème a été résolu!