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
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.