IO操做之ObjectInputStream與ObjectOutputStream

以前寫過DataInputStream和DataOutputStream,使用這兩個類能夠對java基本數據類型進行序列化和反序列化。java

本篇再來兩個新東西:ObjectInputStream,ObjectOutputStream,這二位不但能對java基本數據類型進行操做,還能夠直接幹對象,使用起來也更方便。不過,值得注意的是,被幹的對象須要實現Serializable接口。ide

 

請看下面兩個示例this

public class Student implements Serializable {
    private int id;
    private String name;
    private long age;
    private boolean gender;

    public Student(int id, String name, long age, boolean gender) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getAge() {
        return age;
    }

    public void setAge(long age) {
        this.age = age;
    }

    public boolean isGender() {
        return gender;
    }

    public void setGender(boolean gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }
}

 

示例1:spa

 @Test
    public void testObjectStream() throws Exception {
        String fileName = "E:\\360downloads\\wpcache\\srvsetwp\\student2.txt";
        //對象輸出流
        OutputStream outputStream = new FileOutputStream(fileName);
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
        Student student = new Student(1, "李連杰", 12, true);
        objectOutputStream.writeObject(student);
        objectOutputStream.close();
        outputStream.close();

        //對象輸入流
        FileInputStream fileInputStream = new FileInputStream(fileName);
        ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
        Student o = (Student) objectInputStream.readObject();
        System.out.println(o);  //Student{id=1, name='李連杰', age=12, gender=true}
        objectInputStream.close();
        fileInputStream.close();
    }

 

示例2:code

   @Test
    public void testObjectStreamPrimary() throws Exception {
        String fileName = "E:\\360downloads\\wpcache\\srvsetwp\\student2.txt";
        //對象輸出流
        OutputStream outputStream = new FileOutputStream(fileName);
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
        Student student = new Student(1, "李連杰", 12, true);
       objectOutputStream.writeInt(student.getId()); objectOutputStream.writeUTF(student.getName()); objectOutputStream.writeLong(student.getAge()); objectOutputStream.writeBoolean(student.isGender());
        objectOutputStream.close();
        outputStream.close();

        //對象輸入流
        FileInputStream fileInputStream = new FileInputStream(fileName);
        ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
        int id = objectInputStream.readInt();
        String name = objectInputStream.readUTF();
        long age = objectInputStream.readLong();
        boolean gender = objectInputStream.readBoolean();
        student = new Student(id, name, age, gender);
        System.out.println(student);
        objectInputStream.close();
        fileInputStream.close();
    }
相關文章
相關標籤/搜索