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!

Post a Comment Blogger

 
Top