Charge/Stocker les Objets dans le fichier en Java
Je veux stocker un objet de ma classe dans le fichier, et après que, pour être en mesure de charger l'objet à partir de ce fichier. Mais quelque part, j'ai fais une erreur(s) et ne peuvent pas trouver où. Puis-je recevoir de l'aide?
public class GameManagerSystem implements GameManager, Serializable {
private static final long serialVersionUID = -5966618586666474164L;
HashMap<Game, GameStatus> games;
HashMap<Ticket, ArrayList<Object>> baggage;
HashSet<Ticket> bookedTickets;
Place place;
public GameManagerSystem(Place place) {
super();
this.games = new HashMap<Game, GameStatus>();
this.baggage = new HashMap<Ticket, ArrayList<Object>>();
this.bookedTickets = new HashSet<Ticket>();
this.place = place;
}
public static GameManager createManagerSystem(Game at) {
return new GameManagerSystem(at);
}
public boolean store(File f) {
try {
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(games);
oos.writeObject(bookedTickets);
oos.writeObject(baggage);
oos.close();
fos.close();
} catch (IOException ex) {
return false;
}
return true;
}
public boolean load(File f) {
try {
FileInputStream fis = new FileInputStream(f);
ObjectInputStream ois = new ObjectInputStream(fis);
this.games = (HashMap<Game,GameStatus>)ois.readObject();
this.bookedTickets = (HashSet<Ticket>)ois.readObject();
this.baggage = (HashMap<Ticket,ArrayList<Object>>)ois.readObject();
ois.close();
fis.close();
} catch (IOException e) {
return false;
} catch (ClassNotFoundException e) {
return false;
}
return true;
}
.
.
.
}
public class JUnitDemo {
GameManager manager;
@Before
public void setUp() {
manager = GameManagerSystem.createManagerSystem(Place.ENG);
}
@Test
public void testStore() {
Game g = new Game(new Date(), Teams.LIONS, Teams.SHARKS);
manager.registerGame(g);
File file = new File("file.ser");
assertTrue(airport.store(file));
}
}
Quelle est l'erreur que vous voyez?
Je suis curieux de savoir. Depuis l'ensemble de l'objet est sérialisable, pourquoi ne pas vous faire des tatouages.writeObject(ce)?
Je reçois NotSerializableException 🙁
Sont Jeu, GameStatus et Billet d'exécution sérialisable? Avez-vous Essayé d'isoler chaque writeObject pour voir où cette exception vient?
L'objet n'est pas sérialisable, donc ce type sont typiques contenu du bagage?
Je suis curieux de savoir. Depuis l'ensemble de l'objet est sérialisable, pourquoi ne pas vous faire des tatouages.writeObject(ce)?
Je reçois NotSerializableException 🙁
Sont Jeu, GameStatus et Billet d'exécution sérialisable? Avez-vous Essayé d'isoler chaque writeObject pour voir où cette exception vient?
L'objet n'est pas sérialisable, donc ce type sont typiques contenu du bagage?
OriginalL'auteur brain_damage | 2010-04-30
Vous devez vous connecter pour publier un commentaire.
La solution de ce problème est que lorsque vous utilisez d'autres objets, disons classe
A
, dans une collection commeHashMap
et souhaitez sérialiser lesHashMap
objet, puisimplement
l'interfaceSerializable
pour la classeA
comme ceci:Sinon l'objet ne sera pas sérialisable.
J'espère que ça va résoudre ce problème maintenant.
OriginalL'auteur Shashank T
Essayer oos.flush() avant de le fermer.
...au moins pour ceux qui sont bien mises en œuvre, et comprend ce qui est dans le JRE.
OriginalL'auteur Cameron
Veuillez rappeler que l'ensemble de l'objet graphique est a persisté au cours de sérialiser. Si vous avez quelques références à des classes GUI par exemple, vous avez à faire sérialisables, trop, ou de les marquer comme "transitoire", de sorte que Java ne sera pas sérialiser.
OriginalL'auteur Daniel