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.
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 Output Stream (Luồng xuất 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.
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
Đọ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
Ví dụ về DataOutputStream 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
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
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.
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à:
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ó.
Kiến trúc của class wrapper
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().
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ố
Xem tiếp Lập trình java - Bài 12: Đa luồng
Post a Comment