Cela aussi en Java. Je n'arrive pas à faire fonctionner cette méthode, la partie sauvegarde fonctionne bien et enregistre l'objet. Mais une fois que j'essaie de lire le fichier, cela ne fonctionne pas et j'obtiens des erreurs ObjectInputStream
. Je suis nouveau à l'utilisation de l'interface Serializable
et aucune des autres questions semblent m'aider. La sortie attendue est name Joe, weight 153, height 69
. Les erreurs sont:Comment lire les fichiers sérialisés?
java.io.InvalidClassException: Personne; classe locale incompatible: flux classdesc serialVersionUID = -1404541419531259795, classe locale serialVersionUID = 3020781085877336930 à java.io.ObjectStreamClass.initNonProxy (Source inconnue) à java.io.ObjectInputStream.readNonProxyDesc (Source inconnue) à java.io.ObjectInputStream. readClassDesc (Source inconnue) à java.io.ObjectInputStream.readOrdinaryObject (Source inconnue) à java.io.ObjectInputStream.readObject0 (Source inconnue) à java.io.ObjectInputStream.readObject (Source inconnue)
public static boolean save(Person p, String filename) {
try {
ObjectOutputStream os = new ObjectOutputStream(
new FileOutputStream(filename));
os.writeObject(p);
os.close();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static Person read(String filename) {
try {
ObjectInputStream oi = new ObjectInputStream(new FileInputStream(
filename));
Object o = oi.readObject();
oi.close();
if (o instanceof Person)
return (Person) o;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Do you want to save or load?");
String option = s.next();
Person p = new Person("Joe", 154, 69);
if (option.equals("save")) {
if (save(p, "newfile")) {
System.out.println("Saved.");
}
}
if (option.equals("load")) {
Person p1 = read("newfile");
if ((p1 != null)) {
System.out.println(p1.getInfo());
}
}
}
}
Quelle langue utilisez-vous? Je suppose Java? – Daved
Ouais, c'est java – Krysiak
Vous devriez le marquer Java et le mentionner dans votre post. Il obtiendra une meilleure traction et attention. – Daved