You are on page 1of 19

LAB 01

XỬ LÝ VÀO /RA TRÊN PC & HỆ THỐNG MẠNG

I.MỤC TIÊU

Cũng cố một số kiên thức làm cơ


sở cho thiết kế và lập trình phân tán
với java, gồm các vấn đề như :
- Dòng và File

- Xử lý đọc, ghi trên dòng và File

II. NỘI DUNG

A. LÝ THUYẾT

Luồng : Luồng byte, luồng ký tự

a.Luồng Byte :

+ Lớp trừu tượng : InputStream


và OutputStream

+ Các phương thức hỗ trợ


Lớp luồng byte
Ý nghĩa

BufferedInputStream
Luồng vào trên Bufered

BufferedOutputStream
Luồng ra trên Bufered

ByteArrayInputStream
Input stream đọc dữ liệu từ một
mảng byte

ByteArrayOutputStream
Output Stream ghi dữ liệu từ một
mảng

DataInputStream

Luồng
nhập

những
phươn
g thức
đọc
những
kiểu dữ
liệu
chuẩn
trong
java

DataOutputStream

Luồng
xuất có
những
phươn
g thức
ghi
những
kiểu dữ
liệu
chuẩn
trong
java

FileInputStream
Luồng nhập cho phép đọc dữ liệu
từ file
FileOutputStream
Luồng xuất cho phép ghi dữ liệu
xuống file

FilterInputStream Hiện
thực lớp trừu tượng InputStream

FilterOutputStream
Hiện thực lớp trừu tượng
OutputStream

InputStream
Lớp
trừu
tượng,
là lớp
cha
của tất
cả các
lớp
luồng
nhập
kiểu
Byte

OutputStream
Lớp
trừu
tượng,
là lớp
cha
của tất
cả các
lớp
xuất
nhập
kiểu
Byte

PipedInputStream

Luồng
nhập
byte
kiểu
ống
(piped)
thường
phải
được
gắn với
một
luồng
xuất
kiểu
ống.

PipedOutputStream

Luồng
nhập
byte
kiểu
ống
(piped)
thường
phải
được
gắn với
một
luồng
nhập
kiểu
ống để
tạo nên
một kết
nối
trao
đổi dữ
liệu
kiểu
ống.

PrintStream

Luồng
xuất có
chứa
phươn
g thức
print()

prinln()

PushbackInputStream

một
luồng
nhập
kiểu
Byte
mà hỗ
trợ
thao
tác trả
lại
(push
back)

phục
hồi
thao
tác đọc
một
byte
(unrea
d)

RandomAccessFile
Hỗ
trợ các
thao
tác
đọc,
ghi đối
với file
truy
cập
ngẫu
nhiên.

SequenceInputStream

một
luồng
nhập
được
tạo nên
bằng
cách
nối kết
logic
các
luồng
nhập
khác.

Những phương thức định nghĩa


trong lớp InputStream và
OutputStream

Phương thức Ý nghĩa


InputStream

int available( ) - Trả về số luợng bytes có thể đọc


được từ luồng nhập

- Đóng luồng nhập và giải phóng tài


void close( )
nguyên hệ thống gắn với luồng.

Không thành công sẽ ném ra một lỗi


IOException

void mark(int numBytes) - Đánh dấu ở vị trí hiện tại trong luồng

nhập

boolean markSupported( ) - Kiểm tra xem luồng nhập có hỗ trợ


phương thức mark() và reset() không.

Đọc byte tiếp theo từ luồng nhập

- Đọc buffer.length bytes và lưu vào


int read( )
trong vùng nhớ buffer. Kết quả trả về
số bytes thật sự đọc được

- Đọc numBytes bytes bắt đầu từ địa


chỉ offset và lưu vào trong vùng nhớ
int read(byte buffer[ ])
buffer. Kết quả trả về số bytes thật sự
đọc được

- Nhảy con trỏ đến vị trí được xác định


bởi việc gọi hàm mark() lần sau cùng.
int read(byte buffer[ ], int offset,
int numBytes) - Nhảy qua numBytes dữ liệu từ luồng
void reset( ) nhập

long skip(long numBytes)

Output Stream

void close( ) - Đóng luồng xuất và giải phóng tài


nguyên hệ thống gắn với luồng.

Không thành công sẽ ném ra một lỗi


IOException
void flush( )
- Ép dữ liệu từ bộ đệm phải ghi ngay
xuống luồng (nếu có)

void write(int b) - Ghi byte dữ liệu chỉ định xuống luồng

void write(byte buffer[ ]) - Ghi buffer.length bytes dữ liệu từ


mảng chỉ định xuống luồng

- Ghi numBytes bytes dữ liệu từ vị trí


void write(byte buffer[ ], int
offset, int numBytes) offset của mảng chỉ định buffer xuống

luồng

b.Luồng ký tự (Character Streams)

+ Lớp trừu tượng : Reader và Writer

+ Các phương thức hỗ trợ


Lớp luồng ký tự
Ý nghĩa
BufferedReader Luồng nhập ký
tự đọc dữ liệu vào
một vùng đệm

BufferedWriter Luồng xuất ký tự ghi dữ liệu tới một


vùng đệm

CharArrayReader Luồng nhập đọc dữ liệu từ một mảng ký


tự

CharArrayWriter Luồng xuất ghi dữ liệu tời một mảng ký


tự

FileReader Luồng nhập ký tự đọc dữ liệu từ file

FileWriter Luồng xuất ký tự ghi dữ liệu đến file

FilterReader Lớp đọc dữ liệu trung gian(lớp trừu


tượng)

FilterWriter Lớp xuất trung gian trừu tượng

InputStreamReader Luồng nhập chuyển bytes thành các ký


tự (*)

LineNumberReader Luồng nhập đếm dòng

OutputStreamWriter Luồng xuất chuyển những ký tự thành


các bytes(*)

PipedReader Luồng đọc dữ liệu bằng cơ chế đường


ống
PipedWriter Luồng ghi dữ liệu bằng cơ chế đường
ống

PrintWriter Luồng ghi văn bản ra thiết bị xuất (chứa

phương thức print() và println() )

PushbackReader Luồng nhập


cho phép đọc và khôi
phục lại dữ liệu

Reader Lớp nhập dữ liệu trừu tượng

StringReader Luồng nhập đọc dữ liệu từ chuỗi

StringWriter Luồng xuất ghi dữ liệu ra chuỗi

Writer Lớp ghi dữ liệu trừu tượng

B.BÀI TẬP

1.1. Hãy đọc một mảng byte từ


System.in, sau khi nhập từ bàn phím,
xuất lên màn hình mảng này.

1.2. Sử dụng phương thức


System.out.write() để xuất ký tự ‘X’ ra
Console. Có nhận xét gì khi dung
phương thức write() ?
1.3. Hãy đọc các ký tự từ console sử
dụng BufferedReader, cho đến khi
gặp dấu chấm thì ngừng lại. Xuất
chuỗi đó lên màn hình.
1.4. Hãy đọc các chuỗi từ console sử dụng BufferedReader, nhưng
đến chữ “stop” thì ngừng lại.

1.5. Hãy tạo một file text sử dụng


BufferedReader

1.6. Hãy xuất ra Console dùng luồng


ký tự có kiểu thay đổi

1.7. Hiển thị nội dung của một file tên


test.txt lưu tại D:\test.txt

1.8. Copy nội dung một file text đến


một file text khác
1.9. Dùng DataOutputStream và
DataInputStream để ghi và đọc
những kiểu dữ liệu khác nhau trên
file.

1.10. Ghi 6 số kiểu double xuống file,


rồi đọc lên theo thứ tự ngẫu nhiên.
1.11.Đọc những dòng văn bản nhập
từ bàn phím và ghi chúng xuống file
tên là “test.txt”. Việc đọc và ghi kết
thúc khi người dùng nhập vào chuỗi
“stop”.

You might also like