Bài giảng Lập trình Java - Bài 3: Input và output trong Java
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ố
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
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:
- bai_giang_lap_trinh_java_bai_3_input_va_output_trong_java.pdf