1. Trang chủ
  2. » Thể loại khác

LUỒNG IO (IO Streams)

18 117 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 1,27 MB

Nội dung

Trong buổi học trước, chúng ta đã học về các dòng Synchronized. ngăn các dòng xẩy ra việc chia sẽ (dùng chung) các đối tượng một cách đồng thời. Toàn bộ tiến trình này được quản lý bởi cơ chế đợi thông báo (waitnotify). Phương thức wait() báo cho dòng gọi từ bỏ monitor và nhập vào trạng thái ngủ cho đến khi các dòng khác nhập vào cùng monitor và gọi phương thức notify(). Phương thức notify() và notifyAll() tạo ra dòng thông báo cho các dòng khác gọi phương thức wait() của cùng đối tượng.Trong buổi học trước, chúng ta đã học về các dòng Synchronized. ngăn các dòng xẩy ra việc chia sẽ (dùng chung) các đối tượng một cách đồng thời. Toàn bộ tiến trình này được quản lý bởi cơ chế đợi thông báo (waitnotify). Phương thức wait() báo cho dòng gọi từ bỏ monitor và nhập vào trạng thái ngủ cho đến khi các dòng khác nhập vào cùng monitor và gọi phương thức notify(). Phương thức notify() và notifyAll() tạo ra dòng thông báo cho các dòng khác gọi phương thức wait() của cùng đối tượng.

Chương LUỒNG I/O (I/O Streams) Mục tiêu Kết thúc chương, bạn có :        Đề cập đến khái niệm luồng Mô tả lớp InputStream OutputStream Mô tả I/O mảng Byte Thực tác vụ đệm I/O lọc Dùng lớp RandomAccesFile Mô tả tác vụ chuỗi I/O ký tự Dùng lớp PrinterWriter 9.1 Giới thiệu Trong buổi học trước, học dòng Synchronized ngăn dòng xẩy việc chia (dùng chung) đối tượng cách đồng thời Tồn tiến trình quản lý chế đợi thông báo (wait-notify) Phương thức wait() báo cho dòng gọi từ bỏ monitor nhập vào trạng thái ngủ dòng khác nhập vào monitor gọi phương thức notify() Phương thức notify() notifyAll() tạo dòng thơng báo cho dòng khác gọi phương thức wait() đối tượng Trong học trước, học điều kiện bế tắc cách tránh chúng Chương giới thiệu khái niệm luồng Chúng ta thảo luận lớp khác gói java.io trợ giúp tác vụ nhập xuất .9.2 Các luồng Theo thuật ngữ chung, luồng dòng lưu chuyển thuật ngữ kỹ thuật luồng lộ trình mà liệu truyền chương trình Một ứng dụng luồng ma ta quen thuộc luồng nhập System.in Luồng dàn ống (pipelines) để gửi nhận thông tin chương trình java Khi luồng liệu gửi nhân, ta tham chiếu “ghi” “đọc” luồng theo thứ tự nêu Khi luồng đọc hay ghi, dòng khác bị phong toả Nếu có lỗi xẩy đọc hay ghi luồng, IOexception kích hoạt Do vậy, câu lệnh luồng phải bao gồm khối try-catch Lớp ‘java.lang.System’ định nghĩa luồng nhập xuất chuẩn chúng lớp luồng byte mà java cung cấp Chúng ta sử dụng luồng xuất để xuất liệu hiển thị kết hình Luồng I/O bao gồm: :  Lớp System.out: Luồng xuất chuẩn dùng để hiển thị kết hình  Lớp System.in: Luồng nhập chuẩn thường đến từ bàn phím dùng để đọc ký tự liệu I/O Streams  Lớp System.err: Đây luồng lỗi chuẩn Các lớp ‘InputStream’ ‘OutputStream’ cung cấp nhiều khả I/O khác Cả hai lớp có lớp để thực I/O thơng qua vùng đệm nhớ, tập tin ống dẫn Các lớp lớp InputStream thực đầu vào, lớp lớp OutputStream thực kết xuất .9.3 Gói java.io Các luồng hệ thống có ích Tuy nhiên, chúng khơng đủ mạnh để dùng ứng phó với I/O thực tế Gói java.io phải nhập mục đích Chúng ta thảo luận tìm hiểu lớp thuộc gói java.io 9.3.1 Lớp InputStream Lớp InputStream lớp trừu tượng Nó định nghĩa cách nhận liệu Điểm quan trọng không nằm chổ liệu đế từ đâu, mà truy cập Lớp InputStream cung cấp số phương pháp để đọc dùng luồng liệu để làm đầu vào Các phương thức giúp ta tạo, đọc xử lý luồng đầu vào Các phương thức 9.1 Tên phương thức read() read (byte []) read (byte [], int, int) available() close() mark() markSupporte() reset() skip() Mô tả Đọc byte liệu từ luồng Nếu khơng liệu hợp lệ, khố phương thức Khi phương thực khố, dòng thực chờ liệu hợp lệ trả byte ‘đọc’ hay ‘-1’, kết thúc luồng đến kích hoạt IOException lỗi xảy Nó đọc vào mảng byte Nó trả số byte thực đọc Khi kết thúc luồng đến kích hoạt IOException lỗi xảy Phương pháp trả số lượng byte đọc mà khơng bị phong toả Nó trả số byte hợp lệ Nó khơng phải phương thức hợp lệ đáng tin cậy để thực tiến trình xử lý đầu vào Phương thức đóng luồng Nó dùng để phóng thích tài ngun kết hợp với luồng Ln ln đóng luồng để chắn luồng xử lý kết thúc Nó kích hoạt IOException lỗi xảy Đánh dấu vị trí luồng trả giá trị boolean nêu rõ luồng có hỗ trợ khả mark reset hay khơng Nó trả luồng hỗ trợ khơng sai Phương thức định vị lại luồng theo vị trí đánh dấu chót Nó kích hoạt IOException lỗi xảy Phương thức bỏ qua ‘n’ byte đầu vào ’-n’ định số byte bỏ qua Nó kích hoạt IOException lỗi xảy Phương thức sử dụng để di chuyển tới vị trí đặc biệt bên luồng đầu vào Core Java Table 9.1 InputStream Class Methods 9.3.2 Lớp OutputStream Lớp OutputStream lớp trừu tượng Nó định nghĩa cách ghi kết xuất đến luồng Nó cung cấp tập phương thức trợ giúp tạo ra, ghi xử lý kết xuất luồng Các phương thức bao gồm: Tên phương thức write(int) write(byte[]) write(byte[],int,int) flush() close() Mô tả Phương thức ghi byte Phương thức phong toả byte ghi luồng chờ tác vụ ghi hồn tất Nó kích hoạt IOException lỗi xảy Phương thức ghi mảng byte Lớp OutputStream định nghĩa ba dạng tải phương thức phép phương thức write() ghi byte riêng lẻ, mảng byte, hay đoạn mảng Phương thức xả luồng đệm liệu ghi luồng kết xuất Nó kích hoạt IOException lỗi xảy Phương thức đóng luồng Nó dùng để giải phóng tài nguyên kết hợp với luồng Nó kích hoạt IOException lỗi xảy Bảng 9.2 Các phương thức lớp OutputStream 9.3.3 Nhập xuất mảng byte Các lớp ‘ByteArrayInputStream’ ‘ByteArrayOutputStream’ sử dụng đệm nhớ Không cần thiết phải dùng chúng với  Lớp ByteArrayInputStream Lớp tạo luồng đầu vào từ nhớ đệm Nó mảng byte Lớp không hỗ trợ phương thức Ngược lại chạy đè phương thức lớp InputStream ‘read() ‘, ‘skip()’, ‘available()’ ‘reset()’  Lớp ByteArrayOutputStream Lớp tạo luồng kết suất mảng byte Nó cung cấp khả bổ sung để mảng kết suất tăng trưởng nhằm mục đích chừa chổ cho mảng ghi Lớp cung cấp phương thức ‘toByteArrray()’ ‘toString()’ Chúng dùng để chuyển đổi luồng thành mảng byte hay đối tượng chuỗi Lớp ByteArrayOutputStream cung cấp hai phương thức thiết lập Một chấp nhận đối số số nguyên dùng để ấn định mảng byte kết xuất theo kích cỡ ban đầu thứ hai không chấp nhận đối số nào, thiết lập đệm kết xuất với kích thước mặc định lớp cung cấp vài phương thức bổ sung, không khai báo OutputStream:  reset() Thiết lập lại kết xuất vùng đệm nhằm cho phép tiến trình ghi khởi động lại đầu vùng đệm  size() Trả số byte ghi tới vùng đệm I/O Streams  writeto() Ghi nội dung vùng đệm kết xuất luồng xuất định Để thực hiện, chấp nhận đối tượng lớp OutputStream làm đối số Chương trình 9.1 sử dụng lớp ‘ByteArrayInputStream’ ‘ByteArrayOutputStream’ để nhập xuất: Program 9.1 import java.lang.System; import jạva.io.*; public class byteexam { public static void main(String args[]) throws IOException { ByteArrayOutputStream os =new ByteArrayOutputStream(); String s ="Welcome to Byte Array Input Outputclasses"; for(int i=0; i

Ngày đăng: 05/06/2018, 21:55

w