Các lớp DataInputStream và DataOutputStream

Một phần của tài liệu Giáo trình lập trình mạng (Trang 37 - 39)

Các lớp DataInputStreamDataOutputStream cung cấp các phương thức cho việc đọc và ghi các kiểu dữ liệu cơ bản của Java và các xâu dưới dạng nhị phân. Các định dạng nhị phân được sử dụng cho các mục đích trao đổi dữ liệu giữa các chương trình Java khác nhau thông qua một kết nối mạng, một file dữ liệu, một đường ống (pipe line) hoặc các môi trường trung gian khác

Lớp DataOutputStream cung cấp 11 phương thức để ghi các kiểu dữ liệu cụ thể của Java:

public final void writeBoolean(boolean b) throws IOException

public final void writeByte(int b) throws IOException

public final void writeShort(int s) throws IOException

public final void writeChar(int c) throws IOException

public final void writeInt(int i) throws IOException

public final void writeLong(long l) throws IOException

public final void writeFloat(float f) throws IOException

public final void writeDouble(double d) throws IOException

public final void writeChars(String s) throws IOException

public final void writeBytes(String s) throws IOException

Tất cả các dữ liệu được viết dưới dạng big-endian. Các số nguyên được viết dưới dạng bù hai với số lượng byte ít nhất. Do đó, một số nguyên khai báo kiểu byte

được viết như là 1 byte, khai báo kiểu short sẽ được biểu diễn bằng 2 byte, khai báo kiểu int sẽ được biểu diễn bằng 4 byte, khai báo kiểu long sẽ được biểu diễn bằng 8 byte. Các số thực khai báo kiểu floatdouble sẽ được viết dưới dạng IEEE 754 và được biểu diễn lần lượt là 4 và 8 byte. Các dữ liệu kiểu boolean sẽ được biểu diễn bằng 1 bit với giá trị 0 cho false1 cho true. Các ký tự được viết dưới dạng 2 byte không dấu.

Cùng với các phương thức để viết các số nhị phân và các xâu,

DataOutputStream vẫn có các phương thức thông thường như write(), flush(), và close() như bất kỳ lớp output stream nào.

DataInputStream là lớp bổ sung cho lớp DataOutputStream.

DataInputStream có thể đọc tất cả các định dạng mà lớp DataOutputStream ghi. Thêm vào đó, lớp DataInputStream cũng có các phương thức thông thường như

read(), available(), skip()close() cũng như các phương thức để đọc toàn bộ các mảng các byte và các dòng của văn bản.

Có 9 phương thức để đọc đọc dữ liệu nhị phân tương thích với 11 phương thức trong DataOutputStream:

public final boolean readBoolean() throws IOException

public final byte readByte() throws IOException

public final char readChar() throws IOException

public final short readShort() throws IOException

public final int readInt() throws IOException

public final long readLong() throws IOException

public final float readFloat() throws IOException

public final double readDouble() throws IOException

public final String readUTF() throws IOException

Lớp DataInputStream cung cấp hai phương thức để đọc các byte không dấu và các số nguyên khai báo kiểu short không dấu và trả về số nguyên tương ứng. Mặc dù Java không có hai kiểu dữ liệu là byte không dấu và số nguyên kiểu short không dấu nhưng người lập trình trong Java có thể gặp các kiểu dữ liệu này khi đọc dữ liệu nhị phân viết bằng ngôn ngữ C. Hai phương thức là:

public final int readUnsignedByte() throws IOException

Lớp DataInputStream có hai phương thức thông thường để đọc dữ liệu vào môt mảng hoặc một mảng con và trả về số byte đã đọc. Lớp DataInputStream cũng có hai phương thức readFully(), hai phương thức này sẽ lặp lại việc đọc dữ liệu vào môt mảng từ input stream lớp dưới cho đến khi đã đọc đủ số byte đã yêu cầu. Nếu không đọc được đủ dữ liệu một IOException sẽ được đưa ra. Các phương thức là:

public final int read(byte[] input) throws IOException

public final int read(byte[] input, int offset, int length) throws IOException

public final void readFully(byte[] input) throws IOException

public final void readFully(byte[] input, int offset, int length) throws IOException

DataInputStream cung cấp phương thức phổ biến readLine() để đọc một dòng trong văn bản và trả lại một dòng:

public final String readLine() throws IOException

Tuy nhiên ta không nên sử dụng phương thức này vì phương thức này bị phản đối và có thể gây ra lỗi trong quá trình đọc.

Một phần của tài liệu Giáo trình lập trình mạng (Trang 37 - 39)

Tải bản đầy đủ (PDF)

(114 trang)