Bài viết này giới thiệu về cách sử dụng và tính năng của một số lớp tiện ích IO phổ biến trong Java.
File
Lớp File là lớp duy nhất trong gói java.io được sử dụng để thao tác trực tiếp với tệp tin. Nó cho phép thêm, xóa và truy vấn tệp tin và thư mục.
createNewFile
Có thể sử dụng phương thức createNewFile() để tạo một tệp tin mới.
Lưu ý:
Trong Windows, ký tự \ được sử dụng để phân tách thư mục.
Trong Linux/macOS, ký tự / được sử dụng để phân tách thư mục.
Tốt nhất là sử dụng hằng số tĩnh File.separator, nó sẽ tự động chọn ký tự phân tách thư mục tương ứng với hệ điều hành.
【Ví dụ】Tạo tệp tin
mkdir
Có thể sử dụng phương thức mkdir() để tạo một thư mục. Tuy nhiên, nếu thư mục cha không tồn tại, thì không thể tạo thành công.
Để giải quyết vấn đề này, có thể sử dụng mkdirs(), nếu thư mục cha không tồn tại, nó sẽ tự động tạo cả thư mục cha.
【Ví dụ】Tạo thư mục
delete
Có thể sử dụng phương thức delete() để xóa tệp tin hoặc thư mục.
Lưu ý rằng, nếu xóa một thư mục và thư mục không trống, việc xóa bằng cách sử dụng delete() sẽ thất bại.
【Ví dụ】Xóa tệp tin hoặc thư mục
list và listFiles
Lớp File cung cấp hai phương thức để liệt kê nội dung của thư mục:
list(): Liệt kê tất cả các tên, trả về một mảng chuỗi.
listFiles(): Liệt kê tất cả các đường dẫn đầy đủ, trả về một mảng đối tượng File.
【Ví dụ】Liệt kê tệp tin và thư mục
RandomAccessFile
Lưu ý: Mặc dù lớp RandomAccessFile cho phép đọc và ghi nội dung của tệp tin, nhưng nó khá phức tạp. Vì vậy, thường sử dụng byte stream hoặc stream ký tự để thao tác với nội dung của tệp tin.
Lớp RandomAccessFile là một lớp đọc/ghi ngẫu nhiên, nó là một lớp độc lập hoàn toàn.
Nó được sử dụng cho các tệp tin gồm các bản ghi có kích thước đã biết trước, vì vậy chúng ta có thể sử dụng seek() để di chuyển bản ghi từ một vị trí này sang vị trí khác, sau đó đọc hoặc sửa đổi bản ghi.
Kích thước của các bản ghi trong tệp tin không nhất thiết phải giống nhau, chỉ cần xác định kích thước của các bản ghi và vị trí của chúng trong tệp tin là đủ.
Ghi RandomAccessFile
Khi khai báo đối tượng RandomAccessFile với chế độ rw, nếu file mà chúng ta muốn ghi không tồn tại, hệ thống sẽ tự động tạo mới.
r là chỉ đọc
w là chỉ ghi
rw là đọc và ghi.
【Ví dụ】Ghi ngẫu nhiên vào file
Đọc RandomAccessFile
Để đọc file, chúng ta chỉ cần sử dụng chế độ r, mở file ở chế độ chỉ đọc.
Khi đọc, tất cả các chuỗi chỉ có thể được đọc dưới dạng mảng byte và độ dài phải khớp với độ dài cố định khi ghi vào.
System
Lớp System cung cấp nhiều phương thức tĩnh để lấy thông tin liên quan đến hệ thống hoặc thực hiện các hoạt động cấp hệ thống. Trong đó, có ba thành viên tĩnh thường được sử dụng trong IO:
System.out - Một stream PrintStream. System.out thường được sử dụng để in dữ liệu ra màn hình console. System.out thường chỉ được sử dụng trong các chương trình dòng lệnh tương tự. System.out cũng thường được sử dụng để in thông tin gỡ lỗi của chương trình (mặc dù nó không phải là cách tốt nhất để lấy thông tin gỡ lỗi của chương trình).
System.err - Một stream PrintStream. System.err hoạt động tương tự như System.out, nhưng nó được sử dụng chủ yếu để in ra các thông báo lỗi. Một số chương trình như Eclipse sẽ in thông báo lỗi dưới dạng văn bản màu đỏ thông qua System.err để làm nổi bật thông báo lỗi.
System.in - Một stream InputStream kết nối với bàn phím. Thông thường, khi dữ liệu được truyền cho chương trình Java dòng lệnh thông qua tham số dòng lệnh hoặc tệp cấu hình, System.in không được sử dụng nhiều. Các chương trình giao diện đồ họa sẽ truyền tham số cho chương trình thông qua giao diện, đây là một cơ chế IO đầu vào riêng biệt.
【Ví dụ】Chuyển hướng stream xuất của System.out
【Ví dụ】Chuyển hướng stream đầu ra System.err
【Ví dụ】System.in nhận thông tin đầu vào từ bàn phím
Scanner
Scanner có thể lấy đầu vào từ người dùng và kiểm tra dữ liệu.
【Ví dụ】Kiểm tra xem dữ liệu đầu vào có đúng định dạng không
Kết quả:
Nhập số nguyên: 20
Dữ liệu số nguyên: 20
Nhập số thập phân: 3.2
Dữ liệu số thập phân: 3.2
Nhập ngày (yyyy-MM-dd): 1999-13-04
Định dạng ngày nhập vào không đúng!
null