对象序列化与反序列化中一些有关问题
对象序列化与反序列化中一些问题
如果我有一个添加用户的功能,需要序列化到硬盘,然后我用ObjectOutputStream中writeObject()将用户类写进一个专门的文件中,但再次调用会不会覆盖之前写的?会的话应该怎么做?还有ObjectInputStream中的readObject()读取完一个对象后会不会继续往后读取其他对象的?
------解决方案--------------------
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("",true));
在这里加个true表示的是在文件末尾追加内容
ObjectInputStream中的readObject()读取完一个对象后会继续往后读取其他对象的
如果我有一个添加用户的功能,需要序列化到硬盘,然后我用ObjectOutputStream中writeObject()将用户类写进一个专门的文件中,但再次调用会不会覆盖之前写的?会的话应该怎么做?还有ObjectInputStream中的readObject()读取完一个对象后会不会继续往后读取其他对象的?
------解决方案--------------------
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("",true));
在这里加个true表示的是在文件末尾追加内容
ObjectInputStream中的readObject()读取完一个对象后会继续往后读取其他对象的
- Java code
public class 对象流 { public static void main(String[] args) { try { /*ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("c:/a",true)); User u1 = new User("zs"); User u2 = new User("ls"); os.writeObject(u1); os.writeObject(u2); os.flush(); os.close();*/ ObjectInputStream is = new ObjectInputStream(new FileInputStream("c:/a")); Object obj1 = is.readObject(); Object obj2 = is.readObject(); Object obj3 = is.readObject(); System.out.println(obj1); System.out.println(obj2); System.out.println(obj3); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } class User implements Serializable{ String name; User(String name){ this.name = name; } @Override public String toString() { return "User[name = "+this.name; } }