FileOutputStream otwiera nowy plik i usuwa zawartość za każdym razem, gdy jest tworzony

Zajmuję się serializacją i deserializacją w plikach. Co więcej, stosuję o używaniuFileOutputStream zObjectOutputStream. Problem polega na tym, że mam aplikację do czatu na serwerze / kliencie i za każdym razem, gdy klient jest podłączony, serwer musi sprawdzić, czy podłączony klient zarejestrował się wcześniej. Tak więc, gdy klient jest podłączony do serwera, serwer tworzy strumień wyjściowy

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

aby uzyskać listę powiązań, aby sprawdzić, czy ta lista zawiera ten obiekt, czy nie. Ale,FileOutputStream tworzy zawsze nowy plik bez zawartości. Wiem, czy przekazuję wartość „true” jako drugi parametr do dołączenia pliku, ale ten plik .txt powinien zawierać tylko jeden obiekt, który jest listą połączoną. Dlatego nie chcę dodawać listy w każdym procesie. Jak mogę sobie poradzić z problemem? Chcę tylko

Jeśli nie ma pliku speficied bez zawartości, nie czytaj obiektu, po prostu dodaj listę tylko za pierwszym razemJeśli istnieje określony plik z zawartością (oznacza to, że istnieje tylko jeden obiekt listy połączonej), przeczytaj go i dodaj nowego klienta do listy i zapisz obiekt połączonej listy z powrotem do pliku.

Mam nadzieję, że miałem jasność co do mojego problemu i będę wdzięczny za każdą odpowiedź. W każdym razie dzięki

EDIT: oto prosty przykład tego, co próbuję powiedzieć.

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);
        }
    }

}

Za każdym razem, gdy uruchamiam ten kod, FileOutputStream otwiera nowy plik. Jednak jeśli używamtrue dla drugiego parametru dołącza listy powiązane.

questionAnswers(2)

yourAnswerToTheQuestion