Java 73. Cách lưu đối tượng xuống tập tin | Lập trình Java



    Bản quyền thuộc về TITV.vn, 
    vui lòng không đăng tải lại nội dung từ trang này.

    Video giải thích chi tiết

    https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html

    https://docs.oracle.com/javase/8/docs/api/java/io/ObjectOutputStream.html

     Code chi tiết 

    
         package main;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.ObjectOutputStream;
    import java.io.OutputStream;
    
    public class ViDuGhiDoiTuong {
    	public static void main(String[] args) {
    		try {
    			File file = new File("/Users/mac/eclipse-workspace/Java_73/file.data");
    			OutputStream os = new FileOutputStream(file);
    			ObjectOutputStream oos =new ObjectOutputStream(os);
    			
    			SinhVien st = new SinhVien("001", "TITV", 2000, 10);
    			oos.writeObject(st);
    			
    			oos.flush();
    			oos.close();
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    		
    		
    	}
    }
    
    
    
    package main;
    
    import java.io.Serializable;
    import java.util.Objects;
    
    public class SinhVien implements Comparable, Serializable {
    	private String maSinhVien;
    	private String hoVaTen;
    	private int namSinh;
    	private float diemTrungBinh;
    	
    	
    	public SinhVien(String maSinhVien) {
    		this.maSinhVien = maSinhVien;
    	}
    
    	public SinhVien(String maSinhVien, String hoVaTen, int namSinh, float diemTrungBinh) {
    		this.maSinhVien = maSinhVien;
    		this.hoVaTen = hoVaTen;
    		this.namSinh = namSinh;
    		this.diemTrungBinh = diemTrungBinh;
    	}
    
    	public String getMaSinhVien() {
    		return maSinhVien;
    	}
    
    	public void setMaSinhVien(String maSinhVien) {
    		this.maSinhVien = maSinhVien;
    	}
    
    	public String getHoVaTen() {
    		return hoVaTen;
    	}
    
    	public void setHoVaTen(String hoVaTen) {
    		this.hoVaTen = hoVaTen;
    	}
    
    	public int getNamSinh() {
    		return namSinh;
    	}
    
    	public void setNamSinh(int namSinh) {
    		this.namSinh = namSinh;
    	}
    
    	public float getDiemTrungBinh() {
    		return diemTrungBinh;
    	}
    
    	public void setDiemTrungBinh(float diemTrungBinh) {
    		this.diemTrungBinh = diemTrungBinh;
    	}
    
    	
    	
    	@Override
    	public String toString() {
    		return "SinhVien [maSinhVien=" + maSinhVien + ", hoVaTen=" + hoVaTen + ", namSinh=" + namSinh
    				+ ", diemTrungBinh=" + diemTrungBinh + "]";
    	}
    
    	@Override
    	public int compareTo(SinhVien o) {
    		return this.maSinhVien.compareTo(o.maSinhVien);
    	}
    
    	@Override
    	public int hashCode() {
    		return Objects.hash(diemTrungBinh, hoVaTen, maSinhVien, namSinh);
    	}
    
    	@Override
    	public boolean equals(Object obj) {
    		if (this == obj)
    			return true;
    		if (obj == null)
    			return false;
    		if (getClass() != obj.getClass())
    			return false;
    		SinhVien other = (SinhVien) obj;
    		return Objects.equals(maSinhVien, other.maSinhVien);
    	}
    	
    	
    	
    }
    
    
    
    
    package main;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.ObjectOutputStream;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    
    public class DanhSachSinhVien {
    		private ArrayList danhSach;
    		
    		public DanhSachSinhVien() {
    			this.danhSach = new ArrayList();
    		}
    		
    		public DanhSachSinhVien(ArrayList danhSach) {
    			this.danhSach = danhSach;
    		}
    		
    		// 1.	Thêm sinh viên vào danh sách.
    		public void themSinhVien(SinhVien sv) {
    			this.danhSach.add(sv);
    		}
    		
    //		2.	In danh sách sinh viên ra màn hình.
    		public void inDanhSachSinhVien() {
    			for (SinhVien sinhVien : danhSach) {
    				System.out.println(sinhVien);
    			}
    		}
    		
    //		3.	Kiểm tra danh sách có rỗng hay không.
    		public boolean kiemTraDanhSachRong() {
    			return this.danhSach.isEmpty();
    		}
    		
    //		4.	Lấy ra số lượng sinh viên trong danh sách.
    		public int laySoLuongSinhVien() {
    			return this.danhSach.size();
    		}
    		
    //		5.	Làm rỗng danh sách sinh viên.
    		public void lamRongDanhSach() {
    			this.danhSach.removeAll(danhSach);
    		}
    		
    //		6.	Kiểm tra sinh viên có tồn tại trong danh sách hay không, dựa trên mã sinh viên.
    		public boolean kiemTraTonTai(SinhVien sv) {
    			return this.danhSach.contains(sv);
    		}
    		
    //		7.	Xóa một sinh viên ra khỏi danh sách dựa trên mã sinh viên.
    		public boolean xoaSinhVien(SinhVien sv) {
    			return this.danhSach.remove(sv);
    		}
    		
    //		8.	Tìm kiếm tất cả sinh viên dựa trên Tên được nhập từ bàn phím.
    		public void timSinhVien(String ten) {
    			for (SinhVien sinhVien : danhSach) {
    				if(sinhVien.getHoVaTen().indexOf(ten)>=0) {
    					System.out.println(sinhVien);
    				}
    			}
    		}
    //		9.	Xuất ra danh sách sinh viên có điểm từ cao đến thấp.
    		public void sapXepSinhVienGiamDanTheoDiem() {
    			Collections.sort(this.danhSach, new Comparator() {
    				@Override
    				public int compare(SinhVien sv1, SinhVien sv2) {
    					if(sv1.getDiemTrungBinh()sv2.getDiemTrungBinh()) {
    						return -1;
    					}else {
    						return 0;
    					}
    				}	
    			});
    		}
    		
    //		10. Ghi xuong file
    		public void ghiDuLieuXuongFile(File file) {
    			try {
    				OutputStream os = new FileOutputStream(file);
    				ObjectOutputStream oos =new ObjectOutputStream(os);
    				
    				for (SinhVien sinhVien : danhSach) {
    					oos.writeObject(sinhVien);
    				}
    				
    				oos.flush();
    				oos.close();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    			
    		}
    }
    
    
    
    
     package test;
    
    import java.io.File;
    import java.util.Scanner;
    
    import main.DanhSachSinhVien;
    import main.SinhVien;
    
    public class Test {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		
    		DanhSachSinhVien dssv = new DanhSachSinhVien();
    		int luaChon = 0;
    		do {
    			System.out.println("MENU ---------- ");
    			System.out.println("Vui lòng chọn chức năng: ");
    			System.out.println(
    			  "1.	Thêm sinh viên vào danh sách.\n"
    			+ "2.	In danh sách sinh viên ra màn hình.\n"
    			+ "3.	Kiểm tra danh sách có rỗng hay không.\n"
    			+ "4.	Lấy ra số lượng sinh viên trong danh sách.\n"
    			+ "5.	Làm rỗng danh sách sinh viên.\n"
    			+ "6.	Kiểm tra sinh viên có tồn tại trong danh sách hay không, dựa trên mã sinh viên.\n"
    			+ "7.	Xóa một sinh viên ra khỏi danh sách dựa trên mã sinh viên.\n"
    			+ "8.	Tìm kiếm tất cả sinh viên dựa trên Tên được nhập từ bàn phím.\n"
    			+ "9.	Xuất ra danh sách sinh viên có điểm từ cao đến thấp.\n"
    			+ "10.	Lưu danh sách sinh viên xuống tập tin.\n"
    			+ "0.   Thoát khỏi chương trình");
    			luaChon = sc.nextInt();
    			sc.nextLine();
    			
    			if(luaChon==1) {
    //				1.	Thêm sinh viên vào danh sách.
    				System.out.println("Nhập mã sinh viên: "); String maSinhVien = sc.nextLine();
    				System.out.println("Nhập họ và tên: "); String hoVaTen = sc.nextLine();
    				System.out.println("Nhập năm sinh: "); int namSinh = sc.nextInt();
    				System.out.println("Nhập điểm trung bình: "); float diemTrungBinh = sc.nextFloat();
    				SinhVien sv = new SinhVien(maSinhVien, hoVaTen, namSinh, diemTrungBinh);
    				dssv.themSinhVien(sv);
    				
    			}else if(luaChon==2) {
    //				2.	In danh sách sinh viên ra màn hình.
    				dssv.inDanhSachSinhVien();
    				
    			}else if(luaChon==3) {
    //				3.	Kiểm tra danh sách có rỗng hay không.
    				System.out.println("Danh sách rỗng: "+ dssv.kiemTraDanhSachRong());
    			}else if(luaChon==4) {
    //				4.	Lấy ra số lượng sinh viên trong danh sách.
    				System.out.println("Số lượng hiện tại: "+ dssv.laySoLuongSinhVien());
    			}else if(luaChon==5) {
    //				5.	Làm rỗng danh sách sinh viên.
    				dssv.lamRongDanhSach();
    			}else if(luaChon==6) {
    //				6.	Kiểm tra sinh viên có tồn tại trong danh sách hay không, dựa trên mã sinh viên.
    				System.out.println("Nhập mã sinh viên: "); String maSinhVien = sc.nextLine();
    				SinhVien sv = new SinhVien(maSinhVien);
    				System.out.println("Kiếm tra sinh viên có trong danh sách: "+dssv.kiemTraTonTai(sv));
    			}else if(luaChon==7) {
    //				7.	Xóa một sinh viên ra khỏi danh sách dựa trên mã sinh viên.
    				System.out.println("Nhập mã sinh viên: "); String maSinhVien = sc.nextLine();
    				SinhVien sv = new SinhVien(maSinhVien);
    				System.out.println("Xóa sinh viên trong danh sách: "+dssv.xoaSinhVien(sv));
    			}else if(luaChon==8) {
    //				8.	Tìm kiếm tất cả sinh viên dựa trên Tên được nhập từ bàn phím.
    				System.out.println("Nhập họ và tên: "); String hoVaTen = sc.nextLine();
    				System.out.println("Kết quả tìm kiếm: ");
    				dssv.timSinhVien(hoVaTen);
    				
    			}else if(luaChon==9) {
    //				9.	Xuất ra danh sách sinh viên có điểm từ cao đến thấp.
    				dssv.sapXepSinhVienGiamDanTheoDiem();
    				dssv.inDanhSachSinhVien();
    			}else if(luaChon==10) {
    //			System.out.println("Nhập họ và tên: "); String hoVaTen = sc.nextLine();
    				System.out.println("Nhap ten file: ");
    				String tenFile = sc.nextLine();
    				File f = new File(tenFile);
    				dssv.ghiDuLieuXuongFile(f);
    			}
    		}while(luaChon!=0);
    	}
    }
    
    
    

    Không có nhận xét nào:

    Đăng nhận xét