IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Ecrire des objets dans un fichier


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité de passage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2026
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2026
    Messages : 9
    Par défaut Ecrire des objets dans un fichier
    Bonjour
    J'essaye d'écrire dans un fichier quelques objets
    Quand j'exécute TCOSave3() j'ai l'erreur "java.io.NotSerializableException"

    Je suis sous MacOS Tahoe 26.2
    openjdk version "11.0.28" 2025-07-15 LTS
    OpenJDK Runtime Environment Corretto-11.0.28.6.1 (build 11.0.28+6-LTS)
    OpenJDK 64-Bit Server VM Corretto-11.0.28.6.1 (build 11.0.28+6-LTS, mixed mode)

    Merci pour votre aide
    Louis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
     
    public class Game implements Serializable{
      private String nom, style;
      private double prix;
      public Game(String nom, String style, double prix) {
      this.nom = nom;
      this.style = style;
      this.prix = prix;
      }
      public String toString(){
      return "Nom du jeu : " + this.nom + "\n" +
      "Style de jeu : " + this.style + "\n" +
      "Prix du jeu : " + this.prix + "\n";
      }
    }
     
    public void TCOSave3() {
    //Nous déclarons nos objets en dehors du bloc try/catch
      ObjectOutputStream oos;
      try {
        oos = new ObjectOutputStream(
        new BufferedOutputStream(
        new FileOutputStream(
        new File(sketchPath+"game.txt"))));
        //Nous allons écrire chaque objet Game dans le fichier
        oos.writeObject(new Game("Assassin Creed", "Aventure", 45.69));
        oos.writeObject(new Game("Tomb Raider", "Plateforme", 23.45));
        oos.writeObject(new Game("Tetris", "Stratégie", 2.50));
        //Ne pas oublier de fermer le flux !
        oos.close();
      } catch (FileNotFoundException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 610
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 610
    Par défaut
    Salut est-il nécessaire d'imbriquer des new classes_systeme() alors qu'un simple new File() peut suffire ?

  3. #3
    Invité de passage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2026
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2026
    Messages : 9
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Salut est-il nécessaire d'imbriquer des new classes_systeme() alors qu'un simple new File() peut suffire ?
    Bonjour
    D'abord merci d'avoir répondu
    Ceci est un simple test, l'imbrication est juste pour simplifier le code
    Créer un new File ne change rien, l'erreur est toujours là
    Louis

  4. #4
    Invité de passage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2026
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2026
    Messages : 9
    Par défaut
    Je viens de tester sous Windows et j'ai la même erreur
    Merci popur votre aide
    Louis

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 592
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 592
    Par défaut
    Hello,

    j'ai fait un test "raisonnable" de ton code, et il ne m'indique pas cette erreur. Au contraire il me crée un fichier, que je peux ensuite lire avec un ObjectInputStream et qui me redonne les 3 objets tels que prévu.

    Mais bon, là le code que tu nous montres, il ne compile pas. Il n'a pas non plus de point de démarrage. Tu n'as fourni que des extraits que j'ai placés comme j'ai pu pour que ça marche. On ne sait pas comment toi tu as arrangé ces extraits.

    Au vu du message d'erreur que tu nous montres, j'imagine que tu as plusieurs classes nommées Game dans ton projet, et que celle que tu utilises dans TCOSave3() n'est pas celle que tu nous montres, à la place tu en utilises une autre qui elle n'implémente pas Serializable.

    Parmi les remarques prioritaires à faire, on notera que la sérialisation Java n'est pas du tout un format texte comme le serait du XML ou du JSON. C'est un format binaire opaque. Ce serait donc source de confusion de le mettre dans un fichier dont l'extension est .txt.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Invité de passage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2026
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2026
    Messages : 9
    Par défaut
    D'abord merci pour ta patience

    Ce n'est pas le code de mon projet, c'est juste un extrait d'un livre pour tester la validité des opérations

    Est-ce que tu peux me fournir le code du test que tu as réalisé pour voir si cela fonctionne chez moi

    Mon projet est écrit en Java dans l'environnement Processing est-ce que tu connais ?

    Tout fonctionne correctement sauf ce code dont je veux m'inspirer pour sauvegarder mon projet
    Merci

    Louis

Discussions similaires

  1. Ecrire puis lire des objets dans un fichier .txt
    Par Rick_Cplusplus dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2018, 21h29
  2. Ecrire et Lire des objets dans un fichier
    Par nnj46 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/04/2010, 14h43
  3. Ecrire des objets dans un fichier
    Par Edta dans le forum Langage
    Réponses: 2
    Dernier message: 14/05/2008, 04h29
  4. écrire des entiers dans un fichier
    Par seb__ dans le forum C
    Réponses: 3
    Dernier message: 15/10/2006, 18h32
  5. Ecrire un objet dans un fichier
    Par mikebranque dans le forum C++
    Réponses: 3
    Dernier message: 14/03/2006, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo