zoukankan      html  css  js  c++  java
  • Java中对文件的序列化和反序列化

    public class ObjectSaver {
        public static void main(String[] args) throws Exception {
            /*其中的  D:\objectFile.obj 表示存放序列化对象的文件*/
    
    
            //序列化对象
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("c:\test\objectFile.obj"));
            Customer customer = new Customer("王麻子", 24);
            out.writeObject("你好!");    //写入字面值常量
            out.writeObject(new Date());    //写入匿名Date对象
            out.writeObject(customer);    //写入customer对象
            out.close();
    
    
            //反序列化对象
            ObjectInputStream in = new ObjectInputStream(new FileInputStream("c:\test\objectFile.obj"));
            System.out.println("obj1 " + (String) in.readObject());    //读取字面值常量
            System.out.println("obj2 " + (Date) in.readObject());    //读取匿名Date对象
            Customer obj3 = (Customer) in.readObject();    //读取customer对象
            System.out.println("obj3 " + obj3);
            in.close();
        }
    }
    
    class Customer implements Serializable {
        private String name;
        private int age;
        public Customer(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String toString() {
            return "name=" + name + ", age=" + age;
        }
    }

     所谓的Serializable,就是java提供的通用数据保存和读取的接口。至于从什么地方读出来和保存到哪里去都被隐藏在函数参数的背后了。这样子,任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。这样子极大的简化了类的设计。只要设计一个保存一个读取功能就能解决上面说得所有问题。

  • 相关阅读:
    机器学习笔记(一)线性回归模型
    为什么拷贝构造函数的参数可以直接去访问它自己的私有成员?
    C++之forward move源码分析
    C++之forward
    C++之不完整的数据类型释放
    C++中typename关键字的使用方法和注意事项(好文收藏)
    C++之左值引用和右值引用
    C++之Class内存
    C++ 之Const
    C++之DISALLOW_COPY_AND_ASSIGN
  • 原文地址:https://www.cnblogs.com/pangpanghuan/p/6530549.html
Copyright © 2011-2022 走看看