Friday, November 18, 2016

Bà i 33 Đọc ghi file theo Object trong Java

Bà i 33 Đọc ghi file theo Object trong Java


Bài 33: ??c ghi file theo Object trong Java



serialization
?
- ??t 1 tình hu?ng th?c t?: khi ta mu?n qu?n lý 1 danh sách sinh viên, t?t nhiên s? là 1 dãy r?t nhi?u ??i t??ng, m?i ??i t??ng sinh viên l?i có nhi?u thu?c tính: tên, tu?i, ?i?m, .v..v.. và chúng ta c?n l?u toàn b? thông tin này vào file, ngoài ra còn ph?i x? lý, ch?nh s?a thông tin n?u c?n. Nh? v?y, n?u s? d?ng ki?n th?c ? nh?ng bài tr??c làm ?i?u này thì là r?t khó kh?n. Nh?ng v?i ph?n ki?n th?c ? bài này thì ?i?u ?ó l?i tr? lên c?c k? d? dàng. C? th? ? bài t?p gi?ng nh? tình hu?ng gi? thi?t trên, chúng ta s? s? d?ng ki?u ??c ghi object ?? thao thác, l?u tr? t?ng ??i t??ng lên file!

- Mình s? vi?t 2 ví d? c? th?, v?i các m?c ?? khác nhau,t? ??n gi?n nh?t. N?u b?n th?y khó hi?u ch? nào có th? bình lu?n phía d??i. M?i ng??i cùng trao ??i.

**Chú ý: ?? ??c ghi theo Object trong Java thì t?i class Object ?ó ta c?n ??t giao ti?p java.io.Serializable (implements Serializable)

Ví d? 1: ??c ghi 1 ??i t??ng lên file theo t?ng object:
- Khai báo 1 class SinhVien g?m 2 thu?c tính h? tên, tu?i. T?o 1 ??i t??ng c? th? sinh viên a sau ?ó
gán thông tin cho sinh viên a r?i ghi ??i t??ng a này xu?ng file "E:sinhvien.dat"
- M? file trên ra. ??c file ?ó theo ki?u object ?? l?y ??i t??ng ?ó ra, (c?n ép ki?u v? ki?u d? li?u c?a ??i t??ng), r?i gán nó vào ??i t??ng a1. In ra màn hình thông tin ??i t??ng a1. Code nh? sau:

PHP:
package javaandroidvn;
 
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;

class 
SinhVien implements Serializable {
    public 
String hoTen;
    public 
int tuoi;
}

public class 
JavaAndroidVn {

    public static 
void main(String[] argsthrows IOException {
        
SinhVien a = new SinhVien();
        
a.hoTen "V? V?n T??ng";
        
a.tuoi 21;

        try {
            
FileOutputStream f = new FileOutputStream("E:sinhvien.dat");
            
ObjectOutputStream oOT = new ObjectOutputStream(f); // S? d?ng ?? ghi file theo t?ng Object
            
oOT.writeObject(a); // Ghi  Object là ??i t??ng a xu?ng file
            
oOT.close();
            
f.close();
        } catch (
IOException e) {
            
System.out.println("Có l?i x?y ra!");
        }

        
SinhVien a1 = new SinhVien(); //T?o ??i t??ng a1 m?i, ?? phía d??i gán b?ng ??i t??ng ta l?y ???c ra t? file

        
try {
            
FileInputStream f = new FileInputStream("E:sinhvien.dat");
            
ObjectInputStream oIT = new ObjectInputStream(f); // S? d?ng ?? ??c file theo t?ng Object
            
a1 = (SinhVienoIT.readObject(); //??c Object ??u tiên ép ki?u v? ki?u SinhVien sau ?ó gán b?ng ??i t??ng a1
            
oIT.close();
            
f.close();
        } catch (
IOException io) {
            
System.out.println("Có l?i x?y ra!");
        } catch (
ClassNotFoundException ex) {
            
System.out.println("Không tìm th?y class");
        }
  
        
System.out.println("Thông tin sinh vien a1 ??c ra là:  Tên: "+a1.hoTen+" Tu?i: "+a1.tuoi);
    }
}
Ví d? 2: ??c ghi 2 ??i t??ng lên file theo t?ng object. Các thu?c tính bài này ?? private:
(Qua ví d? này, và k?t h?p bài sau, mình s? gi?i thi?u cách ??c ghi 1 danh sách các ??i t??ng lên file, giúp vi?c qu?n lý danh sách các ??i t??ng d? dàng h?n!)
PHP:
package javaandroidvn;
 
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;

class 
SinhVien implements Serializable {

    private 
String hoTen;
    private 
int tuoi;

    public 
String getHoTen() {
        return 
hoTen;
    }

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

    public 
int getTuoi() {
        return 
tuoi;
    }

    public 
void setTuoi(int tuoi) {
        
this.tuoi tuoi;
    }
}

public class 
JavaAndroidVn {
Ngu?n : Android.vn

Available link for download