Lập trình java- Bài 11: Input và output

Lập trình java- Bài 11: Input và output

 Input và output trong lập trình 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ố

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 trong lập trình java

Luồng byte và luồng character trong lập trình java

Luồng byte và luồng character trong lập trình java

 

Kiến trúc Input Stream (Luồng nhập dữ liệu)

Kiến trúc Input Stream (Luồng nhập dữ liệu) trong lập trình java

 

Kiến trúc Output Stream (Luồng xuất dữ liệu)

Kiến trúc Output Stream (Luồng xuất dữ liệu) trong lập trình java

Luồng byte và luồng character trong lập trình java

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.

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:
Input Stream Output Stream
Có nhiều class luồng byte => File Input Stream
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.
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 trong lập trình java

Xử lý nhập xuất dữ liệu bằng luồng byte trong lập trình java

Xử lý nhập xuất dữ liệu bằng luồng byte trong lập trình java

Đọc, ghi dữ liệu nhị phân (binary data)
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

DataOutputStream trong lập trình java

DataInputStream trong lập trình java

Ví dụ về DataOutputStream trong lập trình java

Đọc_ghi dữ liệu kiểu object trong lập trình java

Ví dụ về DataInputStream trong lập trình java

Đọc_ghi dữ liệu kiểu object trong lập trình java

Đọc, ghi dữ liệu kiểu object trong lập trình java

Đọc, ghi dữ liệu kiểu object trong lập trình java

Đọc, ghi dữ liệu kiểu object trong lập trình java

Truy cập file ngẫu nhiên

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.
Dùng phương thức:
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

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



Xử lý nhập xuất dữ liệu bằng luồng character



Xử lý nhập xuất dữ liệu bằng luồng character

Xử lý nhập xuất dữ liệu bằng luồng character

Xử lý nhập xuất dữ liệu bằng luồng character

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à:

Sử dụng try...catch nhập xuất trong lập trình java


Sử dụng try...catch nhập xuất trong lập 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ó. 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.
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ố trong lập trình java

Kiến trúc của class wrapper

Kiến trúc của class wrapper trong lập trình java


Kiến trúc của class wrapper trong lập trình java

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().

Kiến trúc của class wrapper trong lập trình java

Ví dụ:
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));

Tổng kết 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ố


ĐĂNG NHẬN XÉT

Previous Post Next Post