Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Các luồng vào ra
MIỄN PHÍ
Số trang
24
Kích thước
199.4 KB
Định dạng
PDF
Lượt xem
908

Các luồng vào ra

Nội dung xem thử

Mô tả chi tiết

Chương 3

Các luồng vào ra

1. Khái niệm về luồng trong Java

Khi lập bất kỳ chương trình nào trong một ngôn ngữ nào thì vấn đề vào ra dữ liệu giữa

chương trình và nguồn dữ liệu cũng như đích dữ liệu là vấn đề mà người lập trình cần phải

quan tâm. Làm thế nào để ta có thể truyền dữ liệu cho một chương trình Java. Có hai cách

hiệu quả để thực hiện điều này:

• Thông qua một tài nguyên tuần tự nào đó như file hoặc qua một máy tính khác.

• Thông qua giao diện người máy.

Mục đích của chương này là xem xét cách truyền dữ liệu cho một chương trình thông

qua một máy tính khác hay tập tin.

1.1. Khái niệm luồng (stream)

Theo nghĩa đen luồng là một đường ống nước.

Về mặt thuật ngữ chuyên ngành ta có thể hiểu “Các luồng là các dãy dữ liệu có sắp

thứ tự”.

Xét trên quan điểm của chương trình và nguồn dữ liệu (Data Soure) ta có thể phân

loại luồng thành hai loại: Luồng xuất (output stream) và luồng nhập (input stream). Để trực

quan hơn chúng ta xem hình vẽ dướ đây:

Hình 3.1

Như vậy nếu chúng ta cần lấy dữ liệu từ nguồn vào chương trình thì cần phải sử dụng luồng

nhập. Ngược lại, nếu ta cần ghi dữ liệu từ chương trình ra nguồn dữ liệu thì ta cần phải sử

dụng luồng xuất.

Ta có thể thấy rằng có rất nhiều luồng dữ liệ, chẳng hạn như từ một tệp tin, từ các thiết bị

xuất và nhập chuẩn, từ liên kết mạng. Như vậy một chương trình có thể truy xuất tới nhiiều

nguồn dữ liệu.

59

InputStream

OutputStream

Program

Data Source

InputStream

OutputStream

Hình 3.2

2. Luồng xuất nhập chuẩn

• System.out: Luồng xuất chuẩn thường được sử dụng để hiển thị kết quả đầu ra trên

màn hình.

• System.in: Luồng nhập chuẩn thường đến từ bàn phím và được sử dụng để hiện các

ký tự.

• System.err: Luồng lỗi chuẩn.

Các luồng trên còn được gọi là các luồng hệ thống. Mặc dù các luồng này rất có ích

khi lập trình nhưng chúng không đủ mạnh khi giải quyết các vấn đề vào ra quan trọng khác.

Trong các mục tiếp theo ta sẽ tìm hiểu sâu một số luồng trong gói java.io

3. Luồnng nhị phân

3.1. Lớp InputStream

Lớp trừu tượng InputStream khai báo các phương thức để đọc dữ liệu đầu vào từ một

nguồn cụ thể. Lớp InputStream là lớp cơ sở của hầu hết các luồng nhập trong gói java.io, và

nó hỗ trợ các phương thức sau:

Các phương thức:

• public InpuStream()

InputStream chỉ hỗ trợ constructor không tham số.

• public abstract int read() throws IOException

Phương thức cơ bản của lớp InputStream là phương thức read(). Phương thức này

đọc một byte dữ liệu từ luồng nhập và trả về một số kiểu nguyên int có giá trị nằm

trong khoảng từ 0 đến 255. Giá trị trả về là -1 khi kết thúc luồng. Phương thức read()

chờ và phong tỏa các đoạn mã sau nó cho tới khi một byte dữ liệu được đọc. Việc

nhập và xuất diễn ra với tốc độ chậm, vì vậy nếu chương trình của ta thực hiện một

công việc khác quan trọng thì tốt nhất là đặt các lệnh nhập xuất vào một tuyến đoạn

riêng của nó. Phương thức read() là phương thức trừu tượng bởi vì các lớp con cần

thay đổi để thích ích với môi trường cụ thể.

• public int read(byte[] b) throws IOException

Phương thức này đọc một dãy các byte dữ liệu liên tục từ một nguồn của luồng nhập

và lưu vào mảng b.

• public int read(byte[] b, int offs, int len) throws IOException

60

Thiết bị

Console

Tệp tin

Mạng

InputStream

OutputStream

Chương trình

ứng dụng

Tải ngay đi em, còn do dự, trời tối mất!