Java: Buffered Stream


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Phần lớn các ví dụ trong các bài viết về I/O tại V1Study là không sử dụng bộ đệm I/O. Điều này có nghĩa là từng thao tác đọc hoặc ghi được xử lý trực tiếp bởi hệ điều hành cơ bản, như vậy thì tính hiệu quả sẽ không cao, vì mỗi yêu cầu input và output thường phải truy cập vào đĩa, network, hoặc một số hoạt động khác, và hệ quả là chi phí sẽ tương đối cao.

Để giảm bớt chi phí, nền tảng Java sử dụng các stream bộ đệm I/O. Các stream bộ đệm input đọc dữ liệu từ một vùng bộ nhớ gọi là một bộ đệm; API input gốc chỉ được gọi khi bộ đệm trống. Tương tự như vậy, các stream bộ đệm output ghi dữ liệu vào bộ đệm, và các API output gốc chỉ được gọi khi bộ đệm đầy.

Một chương trình có thể chuyển đổi một không được đệm vào một stream đệm bằng cách sử dụng các gói sẵn có. Cụ thể, ở lớp CopyCharacters có hai câu lệnh là:

    inputStream = new FileReader ( "xanadu.txt");
    outputStream = new FileWriter ( "characteroutput.txt");

, thì ta có thể sửa lại chúng thành như sau:

inputStream = new BufferedReader(new FileReader("input.txt"));

outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));

Có bốn lớp stream đệm dùng để bao các stream không đệm là: BufferedInputStream và BufferedOutputStream tạo byte stream đệm, còn BufferedReader và BufferedWriter tạo character stream đệm.

Xả bộ đệm

Một số lớp output đệm autoflush (xả tự động). Khi kích hoạt xả tự động thì một số sự kiện quan trọng sẽ được kích hoạt để tiến hành xả bộ đệm. Ví dụ, một đối tượng PrintWriter xả tự động sẽ xả bộ đệm mỗi khi gọi phương thức println hoặc format.

Để xả thủ công thì ta gọi phương thức flush. Phương thức flush áp dụng được cho tất cả các output stream, tất nhiên nó chỉ có tác dụng khi stream được đệm.

» Tiếp: Scanning và Formatting
« Trước: Character Stream
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!