Bài giảng Lập trình Java - Bài 3: Input và Output trong Java

Các loại luồng dữ liệu

Các hoạt động nhập/xuất dữ liệu

(nhập dữ liệu từ bàn phím, đọc dữ

liệu từ file, ghi dữ liệu màn hình, ghi

ra file, ghi ra đĩa, ghi ra máy in )

đều được gọi là luồng (stream).

Tất cả các luồng đều có chung

một nguyên tắc hoạt động ngay

cả khi chúng được gắn kết với

các thiết bị vật lý khác nhau.

pdf 40 trang yennguyen 800
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Java - Bài 3: Input và Output trong Java", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình Java - Bài 3: Input và Output trong Java

Bài giảng Lập trình Java - Bài 3: Input và Output trong Java
LẬP TRÌNH JAVA 
BÀI 3 
INPUT và OUTPUT trong Java 
Nhắc lại bài trước 
 Ngoại lệ là các lỗi chỉ xảy ra khi chạy chương trình 
 Khi gặp ngoại lệ thì chương trình lập tức dừng lại 
 Dùng try catch để xử lý ngoại lệ theo ý đồ của người 
lập trình. 
 Dùng try có nhiều catch 
 Dùng try lồng nhau 
 Sử dụng try-catch-finally 
 Sử dụng từ khóa throws 
 Sử dụng từ khóa throw 
2 
Nội dung bài học 
 Các loại luồng dữ liệu 
 Xử lý nhập xuất bằng luồng byte 
 Truy cập file ngẫu nhiên 
 Xử lý nhập xuất bằng luồng character 
 Sử dụng try catch trong nhập/xuất 
 Chuyển đổi dữ liệu kiểu số 
3 
Các loại luồng dữ liệu 
Các hoạt động nhập/xuất dữ liệu 
(nhập dữ liệu từ bàn phím, đọc dữ 
liệu từ file, ghi dữ liệu màn hình, ghi 
ra file, ghi ra đĩa, ghi ra máy in) 
đều được gọi là luồng (stream). 
Tất cả các luồng đều có chung 
một nguyên tắc hoạt động ngay 
cả khi chúng được gắn kết với 
các thiết bị vật lý khác nhau. 
Các loại luồng dữ liệu 
Output Streams – ghi dữ liệu 
vào Files, Buffers in Memory, 
and Sockets 
5 
Input Streams – lấy dữ liệu 
từ các nguồn: Files, Buffers 
và Sockets 
Các loại luồng dữ liệu 
6 
Luồng byte Luồng character 
Hỗ trợ việc xuất nhập dữ 
liệu trên byte, 
Thường được dùng khi 
đọc ghi dữ liệu nhị phân. 
Luồng character (ký tự) 
được thiết kế hỗ trợ việc 
xuất nhập dữ liệu kiểu ký 
tự (Unicode) 
Các loại luồng dữ liệu 
Object 
InputStream 
FileInputStream 
FilterInput 
Stream 
BufferedInputStream 
DataInputStream 
ObjectInput 
Stream 
Reader 
BufferedReader 
Input Stream 
Reader File Reader 
Kiến trúc Input Stream 
(Luồng nhập dữ liệu) 
Các loại luồng dữ liệu 
Object 
OutputStream 
FileOutput 
Stream 
FilterOutput 
Stream 
BufferedOutput Stream 
DataOutput Stream ObjectOutput 
Stream 
Writer 
BufferedWriter 
PrintWriter 
OuputStream 
Writer FileWriter 
Kiến trúc Output Stream 
(Luồng xuất dữ liệu) 
Các loại luồng dữ liệu 
9 
Luồng byte Luồng character 
  Dữ liệu dạng nhị phân 
 2 class abstract: 
• InputStream 
• OutputStream 
 Dữ liệu dạng ký tự Unicode 
 2 class abstract: 
• Reader 
• Writer 
Các loại luồng dữ liệu 
Các thao tác xử lý dữ liệu: 
 import java.io.* 
 Tạo đối tượng luồng và liên kết với nguồn dữ liệu 
 Thao tác dữ liệu (đọc hoặc ghi hoặc cả đọc và ghi) 
 Đóng luồng. 
10 
Xử lý nhập xuất dữ liệu bằng luồng byte 
Sử dụng luồng mỗi byte để 
nhập xuất dữ liệu 
Tất cả các luồng byte được 
kế thừa từ 2 class: 
Có nhiều class luồng byte 
Chúng khác nhau về cách thức 
khởi tạo nhưng cách thức hoạt 
động là giống nhau. 
Input Stream 
Output Stream 
File Input Stream 
File Output Stream 
Xử lý nhập xuất dữ liệu bằng luồng byte 
12 
Sử dụng luồng byte trong các trường hợp: 
Nhập xuất kiểu dữ liệu 
nguyên thủy: 
Kiểu int, float, double, 
String, boolean 
Nhập xuất kiểu dữ liệu khác: 
Kiểu object 
Xử lý nhập xuất dữ liệu bằng luồng byte 
C
ác
 c
la
ss
 B
yt
e 
St
re
am
13 
Xử lý nhập xuất dữ liệu bằng luồng byte 
14 
Ví dụ 1: Tạo file 'file1.dat' và ghi dữ liệu 
Xử lý nhập xuất dữ liệu bằng luồng byte 
Ví dụ 2: Đọc thông tin từ file 'file1.dat' và in ra màn hình 
15 
Xử lý nhập xuất dữ liệu bằng luồng byte 
Đọc, ghi dữ liệu nhị phân (binary data) 
16 
Khi muốn tạo file chứa các kiểu dữ liệu như short, int, 
long, float, double, String, boolean thì sử dụng 2 class: 
Class DataInputStream 
xử lý việc nhập dữ liệu 
Class DataOutputStream 
xử lý việc xuất dữ liệu 
Xử lý nhập xuất dữ liệu bằng luồng byte 
Một số phương thức xử lý dữ liệu nhị phân của 
class DataOutputStream 
Xử lý nhập xuất dữ liệu bằng luồng byte 
Một số phương thức xử lý dữ liệu nhị phân của 
class DataInputStream: 
Xử lý nhập xuất dữ liệu bằng luồng byte 
Ví dụ 1: Ghi dữ liệu 
Xử lý nhập xuất dữ liệu bằng luồng byte 
Ví dụ 2: Đọc dữ liệu 
Xử lý nhập xuất dữ liệu bằng luồng byte 
Ví dụ 3: Đọc, ghi dữ liệu kiểu object 
Xử lý nhập xuất dữ liệu bằng luồng byte 
Ví dụ 3: Đọc, ghi dữ liệu kiểu object 
22 
Xử lý nhập xuất dữ liệu bằng luồng byte 
Ví dụ 2: Đọc, ghi dữ liệu kiểu object 
Truy cập file ngẫu nhiên 
24 
 Sử dụng object RandomAccessFile để truy cập ngẫu 
nhiên nội dung một file. 
 RandomAccessFile là class thực thi 2 interface là 
DataInput và DataOutput trong đó có định nghĩa các 
phương thức input/output. 
• seek(vị_trí): để di chuyển con trỏ file tới vị_trí mới. 
• seek(0): Di chuyển con trỏ tới đầu file 
• seek(file.length()): Di chuyển con trỏ tới cuối file 
Dùng phương thức : 
Truy cập file ngẫu nhiên 
Xử lý nhập xuất dữ liệu bằng luồng character 
Luồng byte rất mạnh mẽ và linh hoạt. Tuy nhiên nếu bạn 
muốn lưu trữ file chứa văn bản Unicode thì luồng 
character là lựa chọn tốt nhất vì ưu điểm của luồng 
character là nó thao tác trực tiếp trên ký tự Unicode. 
Xử lý nhập xuất dữ liệu bằng luồng character 
27 
C
ác
 c
la
ss
: 
Xử lý nhập xuất dữ liệu bằng luồng character 
V
í d
ụ 
1 
Xử lý nhập xuất dữ liệu bằng luồng character 
Ví dụ 2: Ghi vào file mảng String Student: 
Xử lý nhập xuất dữ liệu bằng luồng character 
30 
Ví dụ 3: Đọc dữ liệu từ file và hiển thị ra màn hình: 
Sử dụng try catch trong nhập xuất 
Khi input/output dữ liệu, có những ngoại lệ ‘checked’ nên 
bắt buộc phải catch khi viết code, thông thường các ngoại 
lệ đó là: 
IOException 
FileNotFoundException 
EOFException 
NotSerializableException 
Sử dụng try catch trong nhập xuất 
Chuyển đổi dữ liệu kiểu số 
33 
 Mỗi một kiểu dữ liệu nguyên thủy trong Java đều có 
một class dành riêng cho nó. Các class đó được gọi 
là lớp ‘bao bọc’, bởi vì nó “bọc" kiểu dữ liệu nguyên 
thủy vào một đối tượng của chính lớp đó. 
 Vì vậy, có một lớp Integer chứa một biến int, có một 
lớp Double chứa một biến double 
 Các lớp bao bọc là một phần của gói java.lang, được 
import mặc định vào tất cả các chương trình Java. 
Chuyển đổi dữ liệu kiểu số 
Mỗi một kiểu dữ liệu nguyên thủy trong Java đều có một 
class dành riêng cho nó. 
Chuyển đổi dữ liệu kiểu số 
Kiến trúc của class wrapper 
Chuyển đổi dữ liệu kiểu số 
V
í d
ụ
 v
ề 
p
h
ạm
 v
i c
ủ
a 
cá
c 
ki
ểu
 d
ữ
 li
ệu
: 
36 
Chuyển đổi dữ liệu kiểu số 
 Có 2 ưu điểm chính của class wrapper: 
Biến đổi các kiểu dữ liệu 
nguyên thủy thành dữ 
liệu kiểu đối tượng. 
Convert kiểu String thành 
các dạng kiểu dữ liệu 
khác, là các phương thức 
có dạng parseXXX(). 
37 
Chuyển đổi dữ liệu kiểu số 
38 
float a = Float.parseFloat(str1); 
float b = Float.parseFloat(str2); 
System.out.println("a + b = " + (a + b)); 
System.out.println("a - b = " + (a - b)); 
System.out.println("a * b = " + (a * b)); 
System.out.println("a / b = " + (a / b)); 
System.out.println("a % b = " + (a % b)); 
Chuyển đổi dữ liệu kiểu số 
Ví dụ: 
Tổng kết bài học 
 Các loại luồng dữ liệu 
 Xử lý nhập xuất bằng luồng byte 
 Truy cập file ngẫu nhiên 
 Xử lý nhập xuất bằng luồng character 
 Sử dụng try catch trong nhập/xuất 
 Chuyển đổi dữ liệu kiểu số 
40 

File đính kèm:

  • pdfbai_giang_lap_trinh_java_bai_3_input_va_output_trong_java.pdf