日期:2014-05-20  浏览次数:20800 次

对象序列化与反序列化中一些问题
如果我有一个添加用户的功能,需要序列化到硬盘,然后我用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;
    }
}