FileOutputStream öffnet eine neue Datei und löscht den Inhalt bei jeder Erstellung

Ich beschäftige mich mit Serialisierung und Deserialisierung in Dateien. Darüber hinaus bin ich Stapel über die VerwendungFileOutputStream mitObjectOutputStream. Das Problem ist, dass ich eine Server / Client-Chat-Anwendung habe. Wenn ein Client verbunden ist, muss der Server überprüfen, ob sich der verbundene Client bereits registriert hat. Wenn also ein Client mit dem Server verbunden ist, erstellt der Server einen Ausgabestream wie

FileOutputStream fos = new FileOutputStream("src\\example\\mainList.txt");

um eine verknüpfte Liste zu erhalten, um zu überprüfen, ob diese Liste dieses Objekt enthält oder nicht. Aber,FileOutputStream Erstellt immer eine neue Datei ohne Inhalt. Ich weiß, ob ich einen "wahren" Wert als zweiten Parameter zum Anhängen der Datei übergebe, aber diese TXT-Datei sollte nur ein Objekt enthalten, das eine verknüpfte Liste ist. Daher möchte ich nicht in jedem Prozess eine Liste anhängen. Wie gehe ich mit Problemen um? Ich will nur nur

Wenn es eine definierte Datei ohne Inhalt gibt, die kein Objekt liest, fügen Sie die Liste nur zum ersten Mal hinzuWenn es die angegebene Datei mit Inhalt gibt (bedeutet, dass es nur ein Objekt für verknüpfte Listen gibt), lesen Sie sie, fügen Sie den neuen Client zur Liste hinzu und schreiben Sie das Objekt für verknüpfte Listen zurück in die Datei.

Ich hoffe, dass ich Ihnen über mein Problem klar war und ich werde für jede Antwort dankbar sein. Also trotzdem danke

EDIT: Hier ist ein einfaches Beispiel für das, was ich versuche zu sagen.

public class PersonTest2 {

    public static void main(String[] args) throws IOException, ClassNotFoundException {

        LinkedList<Person> list = new LinkedList<Person>();

        Person per = new Person("John","Thompson",22);
        Person per2 = new Person("Suzie","Cash",23);
        Person per3 = new Person("Peter","Jackson",24);
        Person per4 = new Person("Michael","Coch",25);

        list.add(per);
        list.add(per2);
        list.add(per3);
        list.add(per4);

        FileOutputStream fos = new FileOutputStream("person.txt");

        BufferedReader br = new BufferedReader(new FileReader("person.txt"));     
        if (br.readLine() == null ) {
            System.out.println("No errors, and file is empty");

        }

        ObjectOutputStream oos = new ObjectOutputStream(fos);

        oos.writeObject(list);
        fos.close();

        FileInputStream fis = new FileInputStream("person.txt");
        ObjectInputStream ois = new ObjectInputStream(fis);

        LinkedList<Person> list2;

        list2 = (LinkedList) ois.readObject();

        for (Iterator<Person> itr = list2.iterator(); itr.hasNext();) {
            Person rper = itr.next();

                System.out.println(rper.name + " " + rper.last_name + " " + rper.age);
        }
    }

}

Jedes Mal, wenn ich diesen Code ausführe, öffnet FileOutputStream eine neue Datei. Allerdings, wenn ich benutzetrue Für den zweiten Parameter werden die verknüpften Listen angehängt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage