0

J'ai récemment créé un fichier série pour les utilisateurs. Ce que je lis quand un utilisateur essaie de se connecter. Et ajouter des utilisateurs si un nouvel utilisateur s'enregistre. Mais chaque fois que j'ajoute un nouvel utilisateur, l'enregistrement précédent que j'ai ajouté est supprimé. Y at-il un moyen d'ajouter des objets aux fichiers série? P.S Im en utilisant des objets d'utilisateurs qui contiennent un nom d'utilisateur, un mot de passe, un rôle (instructeur ou étudiant) et une variable score (int).Sérialisation: ajout de fichiers objet en Java

public static void addRecordStudent(String userName, String password, String role, int score) 
{ 
    openFile(); 
    try 
    { 
     // create new record; this example assumes valid input 
     User usr = new User(userName, password, role, score); 
     // serialize record object into file 
     output.writeObject(usr); 
    } 
    catch (NoSuchElementException elementException) 
    { 
     System.err.println("Invalid input. Please try again."); 
    } 
    catch (IOException ioException) 
    { 
     System.err.println("Error writing to file. Terminating."); 
    } 
    closeFile(); 
} 

public static void openFile() 
{ 
    try 
    { 
     output = new ObjectOutputStream(Files.newOutputStream(Paths.get("users.ser"))); 
    } 
    catch (IOException ioException) 
    { 
     System.err.println("Error opening file. Terminating."); 
     System.exit(1); // terminate the program 
    } 
} 

public static void closeFile() 
{ 
    try 
    { 
     if (output != null) 
     output.close(); 
    } 
    catch (IOException ioException) 
    { 
     System.err.println("Error closing file. Terminating."); 
    } 
} 
+0

postez votre code aussi – Ravi

+0

vous devez l'envoyer comme un partie de votre question pas comme un commentaire – Ravi

+0

fait, nouveau sur le site. –

Répondre

0

Vous devez choisir explicitement ajouter au fichier - sinon ancien contenu sera remplacé:

Files.newOutputStream (fichier, StandardOpenOption.APPEND)

En plus de cela, chaque fois que vous créez ObjectOutputStream nouveau le flux est démarré. Vous ne pourrez pas les relire en utilisant ObjectInputStream. Vous pouvez éviter d'utiliser this trick

Si le fichier n'est pas trop volumineux, il peut être préférable de lire tous les objets existants et de réécrire les objets existants et nouveaux en utilisant ObjectOutputStream unique.