Cách đọc đối tượng (Object) từ file trong Java

Trong bài viết trước, bạn đã biết cách ghi đối tượng vào file trong Java. Vậy trong bài này, bạn sẽ phải hiểu được cách đọc đối tượng (Object) từ file đã được ghi dữ liệu.

Để thực hiện việc đọc dữ liệu đối tượng từ file, bạn cần dùng ObjectInputStream để đọc nội dung từ file và chuyển những dữ liệu đó sang đối tượng.

FileInputStream fin = new FileInputStream("C:\\data\\diemthi.bin");
ObjectInputStream ois = new ObjectInputStream(fin);
address = (DiemThi) ois.readObject();

1. Object

Class DiemThi mà chúng ta đã định nghĩa trong bài ghi file

package com.ngockhuong;

import java.io.Serializable;

public class DiemThi implements Serializable {

	private static final long serialVersionUID = 1L;

	private String hoTen;
	private float diemTrungBinh;

	public DiemThi() {
	}

	public DiemThi(String hoTen, float diemTrungBinh) {
		this.hoTen = hoTen;
		this.diemTrungBinh = diemTrungBinh;
	}

	public String getHoTen() {
		return hoTen;
	}

	public void setHoTen(String hoTen) {
		this.hoTen = hoTen;
	}

	public float getDiemTrungBinh() {
		return diemTrungBinh;
	}

	public void setDiemTrungBinh(float diemTrungBinh) {
		this.diemTrungBinh = diemTrungBinh;
	}

	@Override
	public String toString() {
		return "DiemThi [hoTen=" + hoTen + ", diemTrungBinh=" + diemTrungBinh + "]";
	}

}

2. Đọc đối tượng (Object) từ file

Đọc file “C:\\data\\diemthi.bin” đã tạo trong bài trước và chuyển dữ liệu sang đối tượng sau đó in ra.

package com.ngockhuong;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class ReadObject {
	public static void main(String args[]) {
		ReadObject obj = new ReadObject();

		DiemThi diemThi = obj.deserialzeDiemThi("C:\\data\\diemthi.bin");
		System.out.println(diemThi);
	}

	public DiemThi deserialzeDiemThi(String filename) {

		DiemThi diemThi = null;

		FileInputStream fin = null;
		ObjectInputStream ois = null;
		try {
			fin = new FileInputStream(filename);
			ois = new ObjectInputStream(fin);
			diemThi = (DiemThi) ois.readObject();
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			if (fin != null) {
				try {
					fin.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

			if (ois != null) {
				try {
					ois.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

		}
		return diemThi;
	}

	public DiemThi deserialzeDiemThiJDK7(String filename) {

		DiemThi diemThi = null;
		try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename))) {
			diemThi = (DiemThi) ois.readObject();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return diemThi;
	}
}

Kết quả

DiemThi [hoTen=Lâm Ngọc Khương, diemTrungBinh=9.0]

Tham khảo

  1. ObjectOutputStream JavaDoc
  2. Java Object Serialization

3 2 votes
Đánh giá bài viết
Nhận thông báo
Thông báo khi có
guest

0 Bình luận
Phản hồi nội tuyến
Xem tất cả các bình luận