Java I/O - Lớp ObjectInputStream

Lớp ObjectInputStream trong java

Lớp ObjectInputStream trong java được sử dụng để đọc các đối tượng và dữ liệu nguyên thủy mà được ghi bằng việc sử dụng lớp ObjectOutputStream.

Khai báo của lớp ObjectInputStream

Dưới đây là khi báo của lớp Java.io.ObjectInputStream :

public class ObjectInputStream
    extends InputStream implements ObjectInput, ObjectStreamConstants

Constructor của lớp ObjectInputStream

Constructor Mô tả
public ObjectInputStream(InputStream in) Tạo ra một ObjectInputStream đọc từ InputStream đã chỉ định.

Các phương thức của lớp ObjectInputStream

Phương thức Mô tả
public final Object readObject() Đọc một đối tượng từ input stream.
public void close() Đóng ObjectInputStream hiện tại.

Ví dụ về lớp ObjectInputStream trong java

Trong ví dụ này, chúng ta sẽ tuần tự hóa đối tượng của lớp Student. Phương thức writeObject() của lớp ObjectOutputStream cung cấp chức năng để tuần tự hóa đối tượng. Chương trình dưới đây sẽ lưu trạng thái của đối tượng trong tệp có tên testout.txt.

Tạo lớp Student.java

import java.io.Serializable;
 
public class Student implements Serializable {
    private static final long serialVersionUID = 1L;    
    private int id;
    private String name;
    private String address;
    private int age;
 
    public void Studet() {}
     
    public Student(int id, String name, String address, int age) {
        super();
        this.id = id;
        this.name = name;
        this.address = address;
        this.age = age;
    }
 
    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 String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String toString() {
        return "Student@[id=" + id + " , name=" + name + ", "
                + "address= " + address + ",age =" + age+ "]";
    }
}

 File: ObjectInputStreamExample.java

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
 
public class ObjectInputStreamExample {
    public static void main(String[] args) throws IOException {
        ObjectInputStream ois = null;
 
        try {
            ois = new ObjectInputStream(new FileInputStream("D:\\testout.txt"));
            // read student
            Student student = (Student) ois.readObject();
            // show student
            System.out.println(student.toString());
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            ois.close();
        }
    }
}

Giả sử file testout.txt là output của ví dụ trong bài lớp ObjectOutputStream trong java có nội dung như sau:

Ví dụ về lớp ObjectOutputStream trong java output

Output:

Student@[id=1 , name=Tran Hao Phong, address= Ha Noi,age =17]