Object String String Object Linux Ubuntu Java
szfzf
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Les mêmes codes se serialization deserialization marchent sur Windows mais pas sur Linux Ubuntu
Pouvez-vous m'aider ?
Merci d'avance.
Les mêmes codes se serialization deserialization marchent sur Windows mais pas sur Linux Ubuntu
Morceau morceau2 = null;
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream so = new ObjectOutputStream(bo);
so.writeObject(morceau);
so.close();
retour = bo.toString();
} catch (Exception e) {
System.out.println(e);
}
try {
byte b[] = retour.getBytes();
ByteArrayInputStream bi = new ByteArrayInputStream(b);
ObjectInputStream si = new ObjectInputStream(bi);
morceau2 = (Morceau) si.readObject();
} catch (Exception e) {
System.out.println(e);
}
System.out.println("Titre morceau reconstitue " + morceau2.titre);
java.io.StreamCorruptedException: invalid stream header: EFBFBDEF
java.lang.NullPointerException
Pouvez-vous m'aider ?
Merci d'avance.
A voir également:
- Object String String Object Linux Ubuntu Java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Shockwave flash object - Télécharger - Divers Web & Internet
- Waptrick java voiture - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
1 réponse
Bonjour,
Dans la mesure où les bytes que tu manipules sont des données binaires, il n'y a aucune raison de faire de la conversion en texte (avec String), il vaudrait donc mieux t'en passer.
bo.toString();va dépendre de l'encodage du système (différent entre Windows et Linux).
Dans la mesure où les bytes que tu manipules sont des données binaires, il n'y a aucune raison de faire de la conversion en texte (avec String), il vaudrait donc mieux t'en passer.
byte[] b = bo.toByteArray();
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream so = new ObjectOutputStream(bo);
so.writeObject(morceau);
so.flush();
retour = bo.toString("UTF-8");
} catch (Exception e) {
System.out.println(e);
}
try {
byte b[] = retour.getBytes("UTF-8");
ByteArrayInputStream bi = new ByteArrayInputStream(b);
ObjectInputStream si = new ObjectInputStream(bi);
morceau2 = (Morceau) si.readObject();
} catch (Exception e) {
System.out.println(e);
}
Mêmes erreurs
Le mieux serait de faire des try-with-resources.
https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html