Je peux sérialiser ArrayList pour la première course. Il stocke la flamberie des clients à la première fois lorsque le fichier data.ser code> est créé. L'autre fois qu'il n'affiche pas de nouvelle arrayliste de clients.
public void serializeBank(ArrayList<Customer> newCustomers) {
try (ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("data.ser", true))) {
os.writeObject(newCustomers);
} catch (IOException i) {
i.getMessage();
}
}
3 Réponses :
Vous devez ajouter de nouveaux clients à la liste des stocks existants et réussir cette arrayliste mise à jour à la méthode de sérialisation. P>
Mais de cette façon, il n'est pas ajouté au fichier sérialisé. Cela écrirait plutôt toutes les données.
Vous devez ajouter vos nouveaux clients à la liste des stocks existants et transmettez-la à votre méthode p>
Nous ne pouvons donc pas ajouter le fichier data.ser code>, pouvons-nous?
Ouais, mais avez-vous essayé de fermer le courant quand il complète?
C'est un essayer avec code> faire un redondant fermé.
Vous ne pouvez apporter aucune donnée au fichier à l'aide de différents Vous ne pouvez pas sérialiser plusieurs objets code> des objets code> et désérialiser comme un donc strud>, si vous souhaitez sérialiser plusieurs objets code> des objets code>, puis désérialisez-les comme un Vous pouvez également ajouter un nouveau client code> à la liste code> code>, puis effacez tout le contenu du fichier et séralize ObjectOutPutStream code> s. Vous pouvez lire ces questions sur Stackoverflow Ajout à un ObjectOutPutStream et java.io.streamcorruptedexception: code de type invalide: AC pour comprendre pourquoi vous ne pouvez pas faire cela. Mais en bref, c'est parce que chaque nouveau
ObjectOutputStream code> appendez-le dans le fichier qui le corrompre. Donc, vous devriez utiliser une autre instance d'objet
ObjectOutPutStream code> pour écrire tous vos objets dans le fichier. P>
ArrayList
ObjectOutPutStream CODE> marque la marque
ObjectInputStream code> utilise ce marqueur pour savoir comment savoir désérialiser les objets. Cela signifie que si vous écrivez 2 objets sur
ObjectOutputStream code> Votre
ObjectInPhatStream code> lira que 2 objets distinctement. P>
arraylist
arraylist code> dans ce fichier, mais Cela entraînera des problèmes de performance. P>
Merci pour l'explication détaillée. Comment traiter le problème de la performance alors? Aucune suggestion?
Je pense que le mieux consiste à écrire votre logique de sérialisation personnalisée. Mise en œuvre dépend de nombreux facteurs.Pour une instance "Écrivez-vous d'autres données à ce fichier?" "Est-ce que cette liste est champ d'autres objets sérialisables et vous essayez réellement de sérialiser cela. Objet parent? ". Mais, comme exemple de solution, je peux suggérer à [1] étendre arraylist code> [2] redéfinir
lishObject code>,
WriteObject code> méthodes [3] Track nouvellement ajouté
Objets CODE> CODE SERIALISIZE SEULEMENT .MIS Vous devez être très prudent lors de l'extension de
ArrayList CODE> .Aussi vous devriez penser à Supprimer
client code > S -Qu'est-ce que leur arrivera?