Nguyễn Đức Hiển – Bài giảng Lập trình Java
1
Java Object-Oriented Programming
Giảng viên : Nguyễn Đức Hiển
Email :
Website :
Thời lượng
Lý thuyết : 2 tín chỉ (30 tiết)
Thực hành + thảo luận : 1 tín chỉ
Nguyễn Đức Hiển – Bài giảng Lập trình Java
2
Chương 5
Các dòng nhập/xuất
(Input/Output Streams)
Nguyễn Đức Hiển – Bài giảng Lập trình Java
3
Nội dung
Khái niệm
Dòng bộ đệm
Nhập/xuất với tập tin
Tuần tự hóa
Nguyễn Đức Hiển – Bài giảng Lập trình Java
4
Giới thiệu
Dòng (stream) là một sự biểu diễn trừu tượng dữ liệu
được kết nối với một số thiết bị vào hay ra
Nguyễn Đức Hiển – Bài giảng Lập trình Java
5
Java Stream
Hỗ trợ sẵn bộ đệm tự động (buffering)
Hỗ trợ sự biểu diễn của các dòng sử dụng sự trừu
tượng hóa mức cao (khác với bytes)
Đọc/ghi các kiểu dữ liệu đơn nguyên
Đọc/ghi các đối tượng
Định dạng sẵn các dòng ký tự bao gồm sự chuyển đổi qua
lại với các biểu diễn khác (như int, double,…)
Nguyễn Đức Hiển – Bài giảng Lập trình Java
6
Các lớp stream cơ bản
Các lớp stream chính ở trong gói java.io.*
Hai lớp trừu tượng chính
InputStream
int read()
int read(byte[] b)
int read(byte[] b, int off, int len)
OutputStream
void write(int b)
void write(byte[] b)
void write(byte[] b, int off, int len)
Cung cấp chức năng cơ bản cho việc đọc dữ liệu
đến một luồng theo dạng các byte thô
Nguyễn Đức Hiển – Bài giảng Lập trình Java
7
InputStream và OutputStream
Nhiều lớp dẫn xuất tồn tại để cung cấp các chức
năng chuyên dụng.
Các lớp dẫn xuất đáng chú ý:
FileInputStream, FileOutputStream
BufferedInputStream, BufferedOutputStream
ObjectInputStream, ObjectOutputStream
PrintStream
Và còn nhiều hơn
Nguyễn Đức Hiển – Bài giảng Lập trình Java
8
Ví dụ: FileInputStream
Ví dụ chương trình đọc dữ liệu từ một tập tin theo
từng byte (đọc một byte tại một thời điểm).
Nguyễn Đức Hiển – Bài giảng Lập trình Java
9
Các dòng bộ đệm
Ví dụ trước không có hiệu quả bởi vì nó đọc trực tiếp
từ file một byte tại một thời điểm chậm
Chúng ta có thể dùng lớp BufferedInputStream bao
bọc lớp FileInputStream để đọc khối dữ liệu lớn hơn
và lưu giữ trong một bộ đệm sử dụng cho việc đọc.
Nguyễn Đức Hiển – Bài giảng Lập trình Java
10
Các dòng bộ đệm
File
FileInputStream
BufferedInputStream
Java Program
{
…
…
}
BufferedInputStream đọc dữ
liệu từ file trong các khối lớn
và lưu giữ dữ liệu trong một
bộ đệm bên trong
Bộ đệm
Sau đó, bạn có thể đọc dữ liệu
từ BufferedInputStream và dữ
liệu được đọc từ bộ đệm thay vì
trực tiếp từ file trên mỗi lần đọc