Khóa học free Bài 28: Đọc và ghi dữ liệu nhị phân dùng luồng byte trong Java

Thảo luận trong 'Java cơ bản' bắt đầu bởi Tiasangmoi92, 23/7/13.

  1. Tiasangmoi92

    Tiasangmoi92 Super Moderator

    Lượt xem: 12,960
    /* Bài viết thuộc loạt bài hướng dẫn trong "Khóa Học Lập Trình Java Miễn Phí"
    trên diễn đàn Android.Vn, bạn có thể vào đây đọc

    để hiểu hơn về khóa học và tham gia ngay cùng mọi người;) */

    byte-stream
    Ở bài trước chúng ta đã đọc và ghi các bytes dữ liệu là các ký tự mã ASCII. Để đọc và ghi những giá trị nhị phân của các kiểu dữ liệu trong java, chúng ta sử dụng DataInputStream và DataOutputStream.

    1, DataOutputStream:

    Dùng để hiện thực interface DataOuput.
    Interface DataOutput có các phương thức cho phép ghi tất cả những kiểu dữ liệu cơ sở của java đến luồng (theo định dạng nhị phân).

    Untitled1

    Contructor: DataOutputStream(OutputStream outputStream)
    OutputStream: là luồng xuất dữ liệu. Để ghi dữ liệu ra file thì đối tượng outputStream có thể là FileOutputStream.

    2, DataInputStream:

    Dùng để hiện thực interface DataInput.
    Interface DataInput có các phương thức cho phép đọc tất cả những kiểu dữ liệu cơ sở của java (theo định dạng nhị phân).

    Untitled2

    Contructor: DataInputStream(InputStream inputStream)
    InputStream: là luồng nhập dữ liệu. Để đọ dữ liệu từ file thì đối tượng InputStream có thể là FileInputStream.​

    Ví dụ: Dùng DataOutputStream và DataInputStream để ghi và đọc những kiểu dữ liệu khác nhau trên file.
    *** Chú ý: Trong ví dụ dưới mình bổ sung thêm cách đọc và ghi chuỗi nữa nhé! (writeUTF và readUTF)
    PHP:
    package javaandroidvn;
     
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    class 
    JavaAndroidVn {
     
        public static 
    void main(String args[]) throws IOException {
     
            
    DataOutputStream dataOut;
            
    DataInputStream dataIn;
            
    int i 2013;
            
    double d 3.14;
            
    boolean b true;
            
    char ch 'A';
            
    String str "Android.Vn";
     
            try {
                
    dataOut = new DataOutputStream(new FileOutputStream("E:\\androidvn.dat"));
            } catch (
    IOException exc) {
                
    System.out.println("Cannot open file.");
                return;
            }
     
            try {
                
    System.out.println("Writing Int: " i);
                
    dataOut.writeInt(i);
                
    System.out.println("Writing Double: " d);
                
    dataOut.writeDouble(d);
                
    System.out.println("Writing boolean: " b);
                
    dataOut.writeBoolean(b);
                
    System.out.println("Writing Double: " 12.2 7.4);
                
    dataOut.writeDouble(12.2 7.4);
                
    System.out.println("Writing char: " ch);
                
    dataOut.writeChar(ch);
                
    System.out.println("Writing String: " str);
                
    dataOut.writeUTF(str);
            } catch (
    IOException exc) {
                
    System.out.println("Write error.");
            }
     
            
    dataOut.close();
            
    System.out.println();
     
    // Next, read and show them from file
     
            
    try {
                
    dataIn = new DataInputStream(
                        new 
    FileInputStream("E:\\androidvn.dat"));
            } catch (
    IOException exc) {
                
    System.out.println("Cannot open file.");
                return;
            }
     
     
            try {
                
    dataIn.readInt();
                
    System.out.println("Reading Int: " i);
                
    dataIn.readDouble();
                
    System.out.println("Reading Boolean: " d);
                
    dataIn.readBoolean();
                
    System.out.println("Reading Double: " b);
                
    dataIn.readDouble();
                
    System.out.println("Reading Double: " d);
                
    ch dataIn.readChar();
                
    System.out.println("Reading char: " ch);
                
    str dataIn.readUTF();
                
    System.out.println("Reading String: " str);
            } catch (
    IOException exc) {
                
    System.out.println("Read error.");
            }
            
    dataIn.close();
        }
    }
    [​IMG]

    Bài tập về nhà::D
    Tạo đối 1 tượng SinhVien gồm các thuộc tính: tên, năm sinh, điểm trung bình. Ghi các thuộc tính này vào file theo kiểu nhị phân.
    Đọc file in thông tin ra ngoài.
    Nếu chạy lại chương trình mà file đã tồn tại thì không tạo đối tượng mới nữa mà in luôn ra thông tin đối tượng đó được đọc từ file!

    (Chú ý: Các bạn nên tự giác làm bài tập, hoàn thiện rồi đăng lên, các bài bạn đã làm, nên để code trong thẻ code - chọn thẻ PHP cho rõ ràng và để ẩn code trong thẻ ẩn spoiler, để khi click vào mới hiện code lên , trước khi thử sức tự làm, bạn không nên nhìn code của các bạn khác đã đăng nhé;))

    [​IMG]

    My Facebook: https://www.facebook.com/tiasangmoi

    Bài viết đăng lên diễn đàn khác vui lòng ghi rõ nguồn: Android.Vn
    đọc ghi dữ liệu nhị phân java, streams in java, byte streams in java, read by byte streams in java, write byte streams in java, đọc ghi file trong java, đọc ghi file dùng luồng byte java, khóa học java, khóa học lập trình java, học java online
    hiuhiu314, vinatoonSky6596 thích bài này.
  2. xvirion

    xvirion New Member

    chưa ai làm hít @@
    Tiasangmoi92 thích bài này.
  3. Tiasangmoi92

    Tiasangmoi92 Super Moderator

    Không biết mấy bạn các bài trước đâu mất rồi :(
    Sickyboy thích bài này.
  4. vinatoon

    vinatoon New Member

    Qua 1 thơi gian đâu ... mình nghĩ máy bạn ấy ko đủ kiên trì đâu. Chủ yếu là nghị lực Nghị lực
  5. HaiHack

    HaiHack Member

    Nếu mình chỉ dùng read() và write() thôi thì sao hả cậu?
    Cậu có thể phân biệt cụ thể khi nào dùng FileInputStream/FileOutputStream và DataInputStream/DataOutputStream được không?
    Check giùm lỗi code cho mình
    Show Spoiler

    PHP:
    public static void main(String[] argsthrows IOException {
            
    DataInputStream dis;
            
    DataOutputStream dos;
            
    String ten "Doan Chi Binh";
            
    int nam_sinh 1980;
            
    double diemTB 7.3;
            
    boolean check true;
     
            
    File mFile = new File("file.dat");
            if (!
    mFile.exists()) {
                
    mFile.createNewFile();
            } else {
                
    check false;
            }
     
            try {
                
    dis = new DataInputStream(new FileInputStream("file.dat"));
                
    dos = new DataOutputStream(new FileOutputStream("file.dat"));
     
            } catch (
    FileNotFoundException ex) {
                
    System.out.println(ex);
                return;
            }
     
            if (
    check) {
                try {
                    
    dos.writeUTF(ten);
                    
    dos.writeInt(nam_sinh);
                    
    dos.writeDouble(diemTB);
                } catch (
    IOException ex) {
                    
    System.out.println(ex);
                }
     
            }
            try {
                
    System.out.println("Ten: " dis.readUTF());
                
    System.out.println("Nam sinh: " dis.readInt());
                
    System.out.println("Diem trung binh: " dis.readDouble());
                
    dos.close();
                
    dis.close();
            } catch (
    IOException ex) {
                
    System.out.println(ex);
            }
     
        }
  6. KIetHoHoai

    KIetHoHoai New Member

  7. Show Spoiler

    Mã:
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
     
    public class VDBai28B {
        public static void main(String[]args) throws IOException{
            VDBai28B b=new VDBai28B();
            Scanner in=new Scanner(System.in);
            String s1,s2;
            System.out.println("File can tao la(Ho ten sinh vien): ");
            s1=in.nextLine();
            //
            File alt=new File(s1);
    //        ham kiem tra xem file co ton tai trong thu muc ko?
            //    alt.exists();
            if(alt.exists()== true)
            {
                System.out.println("File da ton tai.");
                System.out.println("Thong tin file "+s1);
                b.datainput(s1);
            }
            else
            {
                System.out.println("File chua ton tai.Nhap thong tin file moi.");
                b.dataoutput(s1);
                b.datainput(s1);
            }
           
        }
        public static void dataoutput(String s1) throws IOException
        {   
            Scanner in2=new Scanner(System.in);
            DataOutputStream dataOut;
            String ten;
            String ngaysinh;
            Double dtb;
            System.out.println("Nhap ten: ");
            ten=in2.nextLine();
            System.out.println("Nhap ngay sinh: ");
            ngaysinh=in2.nextLine();
            System.out.println("Nhap diem trung binh: ");
            dtb=in2.nextDouble();
            in2.nextLine();
            try {
                dataOut = new DataOutputStream(new FileOutputStream(s1));
            } catch (IOException exc) {
                System.out.println("Cannot open file.");
                return;
            }
     
            try {
                System.out.println("Writing Ho ten: " + ten);
                dataOut.writeUTF(ten);
                System.out.println("Writing Ngay sinh: " + ngaysinh);
                dataOut.writeUTF(ngaysinh);
                System.out.println("Writing Ho ten: " + dtb);
                dataOut.writeDouble(dtb);
                } catch (IOException exc) {
                System.out.println("Write error.");
            }
     
            dataOut.close();
            System.out.println();
        }
        public static void datainput(String s1) throws IOException
        {
            DataInputStream dataIn;
            String ten;
            String ngaysinh;
            Double dtb;
            try {
                dataIn = new DataInputStream(
                        new FileInputStream(s1));
            } catch (IOException exc) {
                System.out.println("Cannot open file.");
                return;
            }
     
            try {
                ten = dataIn.readUTF();
                System.out.println("Reading Ho ten: " + ten);
                ngaysinh = dataIn.readUTF();
                System.out.println("Reading Ngaysinh: " + ngaysinh);
                dtb = dataIn.readDouble();
                System.out.println("Reading DTB: " + dtb);
               
            } catch (IOException exc) {
                System.out.println("Read error.");
            }
            dataIn.close();
     
        }
    }
    
    Tiasangmoi92 thích bài này.
  8. haizax

    haizax New Member

    Show Spoiler

    PHP:
    package bai28;
     
    import java.io.*;
    import java.util.*;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    public class 
    Bai28 {
        public static 
    String f;
       
        public static 
    void test(){
            
    Scanner in1 = new Scanner(System.in);
            
    System.out.println("Nhập tên file lưu thông tin sinh viên: ");
            
    in1.nextLine();
    }
     
        public static 
    void Output(String fthrows IOException{
            
    Scanner in = new Scanner(System.in);
            
    DataOutputStream dataOut;
            
    String ten;
            
    String tuoi;
            
    double diemtb;
            
    System.out.println("Nhập tên sinh viên: ");
            
    ten in.nextLine();
            
    System.out.println("Nhập ngày tháng năm sinh của sinh viên: ");
            
    tuoi in.nextLine();
            
    System.out.println("Nhập điểm trung bình của sinh viên: ");
            
    diemtb in.nextDouble();
                try {
                    
    dataOut = new DataOutputStream(new FileOutputStream(f));
                } catch (
    FileNotFoundException ex) {
                    
    Logger.getLogger(Bai28.class.getName()).log(Level.SEVEREnullex);
                    return;
                }
            try{
                
    System.out.println("Tên sinh viên: "+ten);
                
    dataOut.writeUTF(ten);
                
    System.out.println("Tuổi sinh viên: "+tuoi);
                
    dataOut.writeUTF(tuoi);
                
    System.out.println("Điểm trung bình sinh viên: "+diemtb);
                
    dataOut.writeDouble(diemtb);
            }catch(
    IOException ex){
                
    System.out.println("Erorr");
            } 
            
    dataOut.close();
            
    System.out.println();
    }
       
        public static 
    void Input(String fthrows IOException{
            
    DataInputStream dataInp;
            
    String ten;
            
    String tuoi;
            
    double diemtb;
            try{
                
    dataInp = new DataInputStream(new FileInputStream(f));
            }catch(
    IOException ex){
                
    System.out.println("Error");
                return;
            }
           
            try{
                
    ten dataInp.readUTF();
                
    System.out.println("Đọc tên: "+ten);
                
    tuoi dataInp.readUTF();
                
    System.out.println("Đọc tuổi: "+tuoi);
                
    diemtb dataInp.readDouble();
                
    System.out.println("Đọc điểm tb: "+diemtb);
            }catch(
    IOException ex){
                
    System.out.println("Erorr"+ex);
            }
            
    dataInp.close();
        }
       
       
        public static 
    void main(String[] argsthrows IOException {
            
    Bai28 a = new Bai28();
            
    a.test();
            
    File file = new File(f);
            if(
    file.exists() == true){
                
    System.out.println("File đã tồn tại");
                
    System.out.println("Thông tin file: "+f);
                
    a.Input(f);
            }else{
                
    System.out.println("File chưa tồn tại\n Viết vào file mới");
                
    file.createNewFile();
                
    a.Output(f);
                
    a.Input(f);
            }
        }
    }
  9. Kroes

    Kroes New Member

    Show Spoiler

    PHP:
    /*
    * To change this license header, choose License Headers in Project Properties.
    * To change this template file, choose Tools | Templates
    * and open the template in the editor.
    */
     
    package javabasic.demo;
     
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
     
    /**
    *
    * @author SystemAdmin
    */
    class SinhVien{
        private 
    String ten;
        private 
    int namSinh;
        private 
    float diemTB;
       
        
    Scanner input = new Scanner(System.in);
     
        public 
    void setTen(String ten) {
            
    this.ten ten;
        }
     
        public 
    void setNamSinh(int namSinh) {
            
    this.namSinh namSinh;
        }
     
        public 
    void setDiemTB(float diemTB) {
            
    this.diemTB diemTB;
        }
     
        public 
    String getTen() {
            return 
    ten;
        }
     
        public 
    int getNamSinh() {
            return 
    namSinh;
        }
     
        public 
    float getDiemTB() {
            return 
    diemTB;
        }
       
        public 
    void input(){
            
    System.out.println("Enter student name: ");
            
    setTen(input.nextLine());
            
    System.out.println("Enter Year of Birth: ");
            
    setNamSinh(input.nextInt());
            
    System.out.println("Enter average mark: ");
            
    setDiemTB(input.nextFloat());
        }
       
        
    DataOutputStream dataOut;
        
    DataInputStream dataIn;
       
        public 
    void writeDB() throws IOException{
            try{
                
    dataOut = new DataOutputStream(new FileOutputStream("E:\\sinhvien.dat"));
            }catch (
    IOException exc){
                
    System.out.println("Cannot open file");
                return;
            }
           
            try{
                
    dataOut.writeUTF(getTen());
                
    dataOut.writeInt(getNamSinh());
                
    dataOut.writeFloat(getDiemTB());
            }catch (
    IOException exc){
                
    System.out.println("Write error");
            }
            
    dataOut.close();
        }
       
        public 
    void showSV() throws IOException{
            try{
                
    dataIn = new DataInputStream(new FileInputStream("E:\\sinhvien.dat"));
            }catch (
    IOException exc){
                
    System.out.println("Cannot open file");
                return;
            }
           
            try{
                
    System.out.println("Student Name: "+dataIn.readUTF());
                
    System.out.println("Year of Birth: "+dataIn.readInt());
                
    System.out.println("Average mark: "+dataIn.readFloat());
            }catch(
    IOException exc){
                
    System.out.println("Read error");
            }
           
            
    dataIn.close();
        }
       
        public 
    int checkDB(){
            try{
                
    dataIn = new DataInputStream(new FileInputStream("E:\\sinhvien.dat"));
                return 
    1;
            }catch (
    IOException exc) {
                return 
    0;
            }
               
        }
    }
     
    public class 
    BaiTap2 {
        public static 
    void main(String[] argsthrows IOException {
            
    SinhVien a = new SinhVien();
           
            if(
    a.checkDB()==0){
                
    a.input();
                
    a.writeDB();
                
    a.showSV();
            } else {
                
    a.showSV();
            }
        }
    }
    nguyenthanhTuyen, 13T2_DTletuanleedragon thích bài này.
  10. thanhpl

    thanhpl New Member

    Show Spoiler

    PHP:
        public static void main(String [] argsthrows IOException{
            
    DataOutputStream dataOut null;
            
    DataInputStream dataIn;
           
            
    SinhVien sv = new SinhVien();
            
    sv.ten "Nguyen Van A";
            
    sv.namSinh 1980;
            
    sv.diemTB 10;
           
            
    File  f = new File("d:\\SinhVien.txt");
            if ( !
    f.exists()) {
                try {
                    
    dataOut = new DataOutputStream(new FileOutputStream("d:\\SinhVien.txt"));
                } catch (
    FileNotFoundException ex)  {
                    
    System.out.println("File not found");
                }
                
    dataOut.writeUTF(sv.ten);
                
    dataOut.writeInt(sv.namSinh);
                
    dataOut.writeFloat(sv.diemTB);
                
    dataOut.close();
            }
            
    String ten;
            
    int ns;
            
    float dtb;
            
    dataIn = new DataInputStream(new FileInputStream("d:\\SinhVien.txt"));
            
    ten dataIn.readUTF();
            
    System.out.println("Ten sinh vien: " ten);
            
    ns dataIn.readInt();
            
    System.out.println("Nam sinh: " ns);
            
    dtb dataIn.readFloat();
            
    System.out.println("Diem trung binh: " dtb);
            
    dataIn.close();
           
        }
    }
    class 
    SinhVien {
        public 
    String ten;
        
    int namSinh;
        
    float diemTB;
    }
  11. DatNguyen

    DatNguyen New Member

    PHP:
    [spoiler=Spoiler][/spoiler]import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
     
     
     
     
    class 
    SinhVien {
    private 
    String ten;
    private 
    int namSinh;
    private 
    float diemTb;
    public 
    String getTen() {
    return 
    ten;
    }
    public 
    void setTen(String ten) {
    this.ten ten;
    }
    public 
    int getNamSinh() {
    return 
    namSinh;
    }
    public 
    void setNamSinh(int namSinh) {
    this.namSinh namSinh;
    }
    public 
    float getDiemTb() {
    return 
    diemTb;
    }
    public 
    void setDiemTb(float diemTb) {
    this.diemTb diemTb;
    }
     
    public 
    void ghiThongTin() throws IOException {
    DataOutputStream dataOut;
    try {
    dataOut = new DataOutputStream(new FileOutputStream("E:\\thongtin.dat"));
    } catch (
    Exception e) {
    System.out.println(e);
    return;
    }
     
    try {
    dataOut.writeInt(getNamSinh());
    dataOut.writeUTF(getTen());
    dataOut.writeFloat(getDiemTb());
    } catch(
    Exception e){
    System.out.println(e);
    }
     
    dataOut.close();
     
    }
    }
     
     
     
     
    public class 
    GhiFileKieuNhiPhan {
    public static 
    void Try() throws IOException{
    SinhVien sinhvien = new SinhVien();
    System.out.println("Nhap ten: ");
    @
    SuppressWarnings("resource")
    Scanner scan = new Scanner(System.in);
    sinhvien.setTen(scan.nextLine());
    System.out.println("Nhap nam sinh: ");
    sinhvien.setNamSinh(scan.nextInt());
    System.out.println("Nhap diem trung binh");
    sinhvien.setDiemTb(scan.nextFloat());
     
    sinhvien.ghiThongTin();
    }
     
    public static 
    void main(String[] argsthrows IOException{
    DataInputStream dataIn null;
    try {
    dataIn = new DataInputStream(new FileInputStream("E:\\thongtin.dat"));
    } catch (
    Exception e) {
    System.out.println(e);
    Try();
    }
     
    try {
                
    int i dataIn.readInt();
                
    System.out.println("Nam sinh " i);
                
    String d dataIn.readUTF();
                
    System.out.println("Ten " d);
                
    float diem dataIn.readFloat();
                
    System.out.println("Diem TB " diem);
            } catch (
    IOException exc) {
                
    System.out.println("Read error.");
            }
            
    dataIn.close();
    }
    }
  12. trungma

    trungma New Member

    Xem hộ mình bài này với:
    Mình không làm được cho kiem tra xem file có chưa tạo nếu có rồi thì in luôn. có thể nói cho minh phương pháp được không.
    Bai tap (open)

    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
    class Data2Byte{
    public static void main(String args[]) throws IOException {
    Scanner sc=new Scanner(System.in);
    System.out.println("Nhap thong tin SInh Vien: ");
    System.out.print("ho Ten: ");
    String ten=sc.nextLine();
    System.out.print("Nam Sinh: ");
    int namsinh=sc.nextInt();
    System.out.print("Diem TB: ");
    float dtb=sc.nextFloat();
    SinhVien A=new SinhVien(ten,namsinh,dtb);
    A.Write();
    A.Read();
    }
    }
    class SinhVien{
    private String ten;
    private int namsinh;
    private float dtb;
    public SinhVien(String ten,int namsinh,float dtb) throws IOException{
    this.namsinh=namsinh;
    this.ten=ten;
    this.dtb=dtb;
    }
    void Write() throws IOException{
    DataOutputStream dataout = null;
    try{
    dataout=new DataOutputStream(new FileOutputStream("E:\\/File/sinhvien.dat"));
    }catch(Exception e1){
    System.out.print("khong tao duoc file: ");
    }
    try{
    dataout.writeUTF(ten);
    dataout.writeInt(namsinh);
    dataout.writeFloat(dtb);;
    }catch(Exception e2){
    System.out.print("Viet file bi loi");
    }
    dataout.close();

    }
    void Read()throws IOException{
    DataInputStream datain=null;
    try{
    datain=new DataInputStream(new FileInputStream("E:\\/File/sinhvien.dat"));
    }catch(Exception e3){
    System.out.print("khong mo dc file");
    }
    try{
    ten=datain.readUTF();
    System.out.println("Ho ten: "+ten);
    namsinh=datain.readInt();
    System.out.println("Nam Sinh: "+namsinh);
    dtb=datain.readFloat();
    System.out.println("Diem Trung Binh: "+dtb);
    }catch(Exception e4){
    System.out.print("Doc file bi loi");
    }
    datain.close();

    }

    }
  13. thanhdat86

    thanhdat86 New Member

    MyUnit28 (open)
    PHP:
    package hoc.java;
     
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
     
    public class 
    Unit28 {
    public static 
    void main(String[] argsthrows IOException {
    Scanner sc = new Scanner(System.in);
    Unit28 u = new Unit28();
    System.out.println("Nhap duong dan file: ");
    String path sc.nextLine();
    if (
    u.checkfile(path) != true) {
    u.outputData(path);
    } else {
    System.out.println("File Da Ton Tai, Noi Dung File: ");
    u.inputData(path);
    }
    }
     
    public 
    boolean checkfile(String filename) {
    File f = new File(filename);
    if (
    f.exists() == true)
    return 
    true;
    else
    return 
    false;
     
    }
     
    public 
    void inputData(String file) {
    try {
    DataInputStream inData = new DataInputStream(new FileInputStream(
    file));
    System.out.println("Noi Dung File");
    System.out.println(inData.readUTF());
    System.out.println(inData.readInt());
    System.out.println(inData.readFloat());
    inData.close();
    } catch (
    IOException exc) {
    System.out.println("Co Loi Xay Ra: " exc.toString());
    }
    }
     
    public 
    void outputData(String file) {
    try {
    Scanner input = new Scanner(System.in);
    SinhVienUnit28 sv = new SinhVienUnit28();
    DataOutputStream outData = new DataOutputStream(
    new 
    FileOutputStream(file));
    System.out.print("Nhap ten SV: ");
    sv.setHoVaTen(input.nextLine());
    System.out.print("Nam Sinh: ");
    sv.setNamSinh(input.nextInt());
    System.out.print("Diem TB: ");
    sv.setDiemTB(input.nextFloat());
    outData.writeUTF(sv.getHoVaTen());
    outData.writeInt(sv.getNamSinh());
    outData.writeFloat(sv.getDiemTB());
    outData.close();
     
    } catch (
    IOException exc) {
    System.out.println("Co Loi Xay Ra: " exc.toString());
    }
    }
    }
     
    class 
    SinhVienUnit28 {
    private 
    String hoVaTen;
    private 
    int namSinh;
    private 
    float diemTB;
     
    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 getDiemTB() {
    return 
    diemTB;
    }
     
    public 
    void setDiemTB(float diemTB) {
    this.diemTB diemTB;
    }
     
    public 
    SinhVienUnit28() {
    // TODO Auto-generated constructor stub
    }
     
    SinhVienUnit28(String hotenint namsinhfloat diemtb) {
    this.hoVaTen hoten;
    this.namSinh namsinh;
    this.diemTB diemtb;
    }
    }
    NHATTA thích bài này.
  14. NHATTA

    NHATTA Member

    Nộp bài (open)

    PHP:
    package javaandroidvn;
     
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
     
    public class 
    javaAndroid6 {
        public static 
    void main(String[] args) {
            
    Scanner Input = new Scanner(System.in);
            
    String InputFile null;
            
    System.out.println("Nhập đường dẫn file:");
            
    InputFile Input.nextLine();
            
    // Kiem tra xem file da ton tai chua
            
    File file = new File(InputFile);
            
    SinhVien sv = new SinhVien();
            if (
    file.exists() == true) {
                
    System.out.println("File đã tồn tại");
                
    System.out.println("Thông tin file:" InputFile);
                
    sv.ReadandShowFile(InputFile);
            } else {
                
    sv.WriteFile(InputFile);
                
    sv.ReadandShowFile(InputFile);
            }
     
            
    Input.close();
        }
    }
     
    class 
    SinhVien {
        private 
    String ten;
        private 
    int namsinh;
        private 
    float dtb;
     
        public 
    String getTen() {
            return 
    ten;
        }
     
        public 
    void setTen(String ten) {
            
    this.ten ten;
        }
     
        public 
    int getNamsinh() {
            return 
    namsinh;
        }
     
        public 
    void setNamsinh(int namsinh) {
            
    this.namsinh namsinh;
        }
     
        public 
    float getDtb() {
            return 
    dtb;
        }
     
        public 
    void setDtb(float dtb) {
            
    this.dtb dtb;
        }
     
        public 
    void WriteFile(String InputFile) {
            
    DataOutputStream dataOut null;
            try {
                
    dataOut = new DataOutputStream(new FileOutputStream(InputFile));
            } catch (
    FileNotFoundException e) {
                
    System.out.println("Can not file");
                
    // return;
                // TODO Auto-generated catch block
                // e.printStackTrace();
            
    }
            
    Scanner Input = new Scanner(System.in);
     
            try {
     
                
    System.out.print("Họ tên:");
                
    ten Input.nextLine();
                
    dataOut.writeUTF(ten);
                
    System.out.print("Năm sinh:");
                
    namsinh Input.nextInt();
                
    dataOut.writeInt(namsinh);
                
    Input.nextLine();
                
    System.out.print("Điểm trung bình:");
                
    dtb Input.nextFloat();
                
    dataOut.writeFloat(dtb);
            } catch (
    IOException e) {
                
    // TODO Auto-generated catch block
                
    System.out.println("Error:" e);
                
    // e.printStackTrace();
            
    }
     
            
    Input.close();
        }
     
        public 
    void ReadandShowFile(String InputFile) {
            
    DataInputStream dataIn null;
            try {
                
    dataIn = new DataInputStream(new FileInputStream(InputFile));
            } catch (
    FileNotFoundException e) {
                
    // TODO Auto-generated catch block
                
    System.out.println("Không thể mở file");
                
    // e.printStackTrace();
            
    }
     
            try {
                
    ten dataIn.readUTF();
                
    System.out.println("Họ tên:" ten);
                
    namsinh dataIn.readInt();
                
    System.out.println("Năm sinh:" namsinh);
                
    dtb dataIn.readFloat();
                
    System.out.println("Điểm trung bình:" dtb);
            } catch (
    IOException e) {
                
    // TODO Auto-generated catch block
                
    e.printStackTrace();
            }
     
        }
    }
  15. zquangu112z

    zquangu112z Cuộc sống là không chờ đợi!

    PHP:
    package streamData;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
    class 
    Hello{
    String name;
    long birth;
    double mark
    }
    public class 
    HocSinh {
    static 
    Scanner inp;
    public static 
    void main(String[] argsthrows IOException{
    Hello a=new Hello();
    a.name="Truong Quang Ngu";
    a.birth=1995;
    a.mark=9.05;
    System.out.println(a.name+"\n"+a.birth+"\n"+a.mark);
    DataOutputStream dataOut;
    DataInputStream dataIn;
    //hoi dia chi luu file
    String add;
    System.out.println("Let's Input Address,please...");
    inp=new Scanner(System.in);
    add=inp.nextLine();
     
    try{ 
    //neu file da ton tai thi cho in ra.
     
    dataIn =new DataInputStream(new FileInputStream(add));
    try{
    System.out.println(dataIn.readUTF());}catch(Exception e){System.out.println("no UTF");}
    try{
    System.out.println(dataIn.readLong());}catch(Exception e){System.out.println("no long");}
    try{
    System.out.println(dataIn.readDouble());}catch(Exception e){System.out.println("no double");} 
    }catch(
    FileNotFoundException e){//luc nay file chua ton tai, ta tao file moi va nhap du lieu cho no.
    try{
    dataOut=new DataOutputStream(new FileOutputStream(add));
    }catch(
    Exception e1){
    System.out.println("error 1");
    return;
    }
     
    //input data
    try{
    dataOut.writeUTF(a.name);
    dataOut.writeLong(a.birth);
    dataOut.writeDouble(a.mark);
    }catch(
    Exception e2){
    System.out.println("error 2");
    }
     
     
    System.out.println("end 1");
    //print
    try{
    dataIn =new DataInputStream(new FileInputStream(add));
    }catch(
    Exception e3){
    System.out.println("error 3");
    return;
    }
     
    try{
    System.out.println(dataIn.readUTF());
    System.out.println(dataIn.readLong());
    System.out.println(dataIn.readDouble());
    }catch(
    Exception e4){
    System.out.println("error 4");
    }
    System.out.println("end 2");
    }
    }
    }
  16. zquangu112z

    zquangu112z Cuộc sống là không chờ đợi!

    Ai giải thích giúp mình tại sao các lệnh write và read phải theo thứ tự thì mới chạy nếu không sẽ ra kết quả sai?
    ví dụ: dOut.writeUTF(a);
    dOut.writeFloat(b);
    khi xuất:
    dIn.readUTF();
    dIn.readFloat();
    (đổi readFloat lên trước thì nó đọc sai).
  17. nguyenhong

    nguyenhong New Member

    Ai giải thích giúp mình tại sao các lệnh write và read phải theo thứ tự thì mới chạy nếu không sẽ ra kết quả sai?
    ví dụ: dOut.writeUTF(a);
    dOut.writeFloat(b);
    khi xuất:
    dIn.readUTF();
    dIn.readFloat();
    (đổi readFloat lên trước thì nó đọc sai).

    | dưỡng da
  18. tuanleedragon

    tuanleedragon New Member

    Bài bạn làm quá tuyệt vời, khoa học và IQ
    13T2_DTle thích bài này.
  19. hatb

    hatb Member

    BTVN Bai 28 (open)

    PHP:
    package baitapvenha;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
    /**
    * Bài tập về nhà: Tạo đối 1 tượng SinhVien gồm các thuộc tính: tên, năm sinh,
    * điểm trung bình. Ghi các thuộc tính này vào file theo kiểu nhị phân. Đọc file
    * in thông tin ra ngoài. Nếu chạy lại chương trình mà file đã tồn tại thì không
    * tạo đối tượng mới nữa mà in luôn ra thông tin đối tượng đó được đọc từ file!
    */
    public class Bai28 {
        public static 
    void main(String[] argsthrows IOException {
           
    Bai28 test = new Bai28();
           
    SinhVien28 sv = new SinhVien28();
           
    String partFile "E:\\ThongtinSV.txt";
           
    test.writeFile(partFilesv);
          
    /*System.out.println("\nThong tin sinh vien duoc doc tu file: ");
           test.readFile(partFile, sv);
          */
      
    }
     
      public 
    void writeFile(String partFileSinhVien28 svthrows IOException {
           
    File f = new File(partFile);
           
    DataOutputStream dataOut null;
           if (!
    f.exists()) {
                 try {
                       
    System.out.println("Nhap thong tin sinh vien ghi vao file: ");
                       
    sv.nhapSV(); 
                       
    dataOut = new DataOutputStream(new FileOutputStream(partFile));
                } catch (
    FileNotFoundException e) {
                      
    // TODO Auto-generated catch block
                      
    System.out.println("Error: " e);
                }
                
    dataOut.writeUTF(sv.getTen());
                
    dataOut.writeInt(sv.getNamSinh());
                
    dataOut.writeFloat(sv.getdToan());
                
    dataOut.writeFloat(sv.getdLy());
                
    dataOut.writeFloat(sv.getdHoa());
                
    dataOut.writeFloat(sv.getDiemTB());
                
    dataOut.close();
            }
            
    System.out.println("\nThong tin sinh vien duoc doc tu file: ");
            
    readFile(partFilesv);
       }
     
       public 
    void readFile(String partFileSinhVien28 svthrows IOException 
            
    DataInputStream dataIn = new DataInputStream(new FileInputStream(
    partFile));
            
    sv.setTen(dataIn.readUTF());
            
    System.out.println("Ten sinh vien: " sv.getTen());
            
    sv.setNamSinh(dataIn.readInt());
            
    System.out.println("Nam sinh: " sv.getNamSinh());
            
    sv.setdToan(dataIn.readFloat());
            
    sv.setdLy(dataIn.readFloat());
            
    sv.setdHoa(dataIn.readFloat());
            
    sv.setDiemTB(dataIn.readFloat());
            
    System.out.println("Diem trung binh: " sv.getDiemTB());
            
    dataIn.close();
       }
    }
     
    class 
    SinhVien28 {
        private 
    String ten;
        private 
    int namSinh;
        private 
    float dToandLydHoa;
        private 
    float diemTB;
       
        public 
    void nhapSV() {
             
    Scanner sc = new Scanner(System.in);
             
    System.out.print("Ten : ");
             
    ten sc.nextLine();
             
    System.out.print("Nam Sinh: ");
             
    namSinh sc.nextInt();
             
    System.out.print("Toan : ");
             
    dToan sc.nextFloat();
             
    System.out.print("Ly : ");
             
    dLy sc.nextFloat();
             
    System.out.print("Hoa : ");
             
    dHoa sc.nextFloat();
       }
     
        public 
    String getTen() {
             return 
    ten;
        }
        public 
    int getNamSinh() {
            return 
    namSinh;
        }
        public 
    float getDiemTB() { 
             return 
    diemTB = (getdToan()+getdLy()+getdHoa()) / 3;
        }
        public 
    void setTen(String ten) {
             
    this.ten ten;
        }
        public 
    void setNamSinh(int namSinh) {
             
    this.namSinh namSinh;
        }
        public 
    void setDiemTB(float diemTB) {
            
    this.diemTB diemTB;
        }
        public 
    float getdToan() {
            return 
    dToan;
        }
        public 
    float getdLy() {
             return 
    dLy;
        }
        public 
    float getdHoa() {
             return 
    dHoa;
        }
        public 
    void setdToan(float dToan) {
            
    this.dToan dToan;
        }
        public 
    void setdLy(float dLy) {
            
    this.dLy dLy;
        }
        public 
    void setdHoa(float dHoa) {
            
    this.dHoa dHoa;
        } 
    }
  20. vulenguyen

    vulenguyen New Member

    public class BangChinh {
    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    SinhVien s=new SinhVien();
    s.setHoten("Le Nguyen Hoan Vu");
    s.setNamsinh("20/12/1992");
    s.setDiemtb(9.8);

    DataOutputStream dataout;
    DataInputStream datain;
    File filename=new File("E:\\hoanvu.dat");
    try {
    if (!filename.exists())
    {
    dataout=new DataOutputStream(new FileOutputStream(filename));
    System.out.println("Ghi thông tin ra file");
    System.out.println("Ghi tên sinh viên");
    dataout.writeUTF(s.getHoten());
    System.out.println("Ghi ngày tháng năm sinh");
    dataout.writeUTF(s.getNamsinh());
    System.out.println("Ghi điểm");
    dataout.writeDouble(s.getDiemtb());
    dataout.close();
    }
    else
    {
    datain=new DataInputStream(new FileInputStream(filename));
    String s1=datain.readUTF();
    System.out.println("Họ tên sinh viên:"+s1);
    String s2=datain.readUTF();
    System.out.println("Ngay thang nam sinh:"+s2);
    double s3=datain.readDouble();
    System.out.println("Điểm sinh viên:"+s3);
    datain.close();
    }
    } catch (IOException e) {
    System.out.println("Không tạo được file");
    return;
    }

    }​
    }​

Chia sẻ trang này