我处理的文件序列化和反序列化。 此外,我堆栈有关使用FileOutputStream
使用ObjectOutputStream
。 问题是,我有服务器/客户端聊天应用程序和每当客户端连接,服务器必须检查,如果连接的客户端之前已经注册。 这样,当客户端连接到服务器,服务器创建等相关的输出流
FileOutputStream fos = new FileOutputStream("src\\example\\mainList.txt");
得到一个链表来检查这个列表中是否包含此对象与否。 但是, FileOutputStream
总是创建一个没有内容的新文件。 我知道如果我通过一个“真”作为第二个参数追加文件,但这个文本文件应该只包含一个对象,它是一个LinkedList。 因此,我不想在每一个过程中附加一个列表。 我该如何处理与问题? 我只是想
- 如果有speficied文件,没有内容不读对象,只需添加列表仅第一次
- 如果存在与内容指定的文件(是指只有一个链表对象),然后读取它,并添加新的客户到列表中,写LinkedList的对象回文件。
我希望,我对我的问题是明确的给你,我会感谢每一个答案。 所以,我还是谢谢你
编辑:这是什么,我想说一个简单的例子。
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);
}
}
}
每次我运行这段代码FileOutputStream中打开一个新的文件。 但是,如果我用true
的第二个参数,将追加linkedlists。