io流操作之对象流代码

来源:互联网 发布:海信网络电视多吗 编辑:程序博客网 时间:2024/05/22 00:24
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;import org.junit.Test;public class TestObjectInputOutputStream {    // 对象的反序列化过程:将硬盘中的文件通过ObjectInputStream转换为相应的对象    @Test    public void testObjectInputStream() {        ObjectInputStream ois = null;        try {            ois = new ObjectInputStream(new FileInputStream(                    "person.txt"));            Person p1 = (Person)ois.readObject();            System.out.println(p1);            Person p2 = (Person)ois.readObject();            System.out.println(p2);        }catch (Exception e) {            e.printStackTrace();        }finally{            if(ois != null){                try {                    ois.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }    // 对象的序列化过程:将内存中的对象通过ObjectOutputStream转换为二进制流,存储在硬盘文件中    @Test    public void testObjectOutputStream() {        Person p1 = new Person("小米", 23,new Pet("花花"));        Person p2 = new Person("红米", 21,new Pet("小花"));        ObjectOutputStream oos = null;        try {            oos = new ObjectOutputStream(new FileOutputStream("person.txt"));            oos.writeObject(p1);            oos.flush();            oos.writeObject(p2);            oos.flush();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            if (oos != null) {                try {                    oos.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }}/* * 要实现序列化的类: 1.要求此类是可序列化的:实现Serializable接口 * 2.要求类的属性同样的要实现Serializable接口 * 3.提供一个版本号:private static final long serialVersionUID * 4.使用static或transient修饰的属性,不可实现序列化 */class Person implements Serializable {    private static final long serialVersionUID = 23425124521L;    static String name;    transient Integer age;    Pet pet;    public Person(String name, Integer age,Pet pet) {        this.name = name;        this.age = age;        this.pet = pet;    }    @Override    public String toString() {        return "Person [name=" + name + ", age=" + age + ", pet=" + pet + "]";    }}class Pet implements Serializable{    String name;    public Pet(String name){        this.name = name;    }    @Override    public String toString() {        return "Pet [name=" + name + "]";    }}
0 0
原创粉丝点击