Có nhiều tình huống bạn muốn làm việc với file trong Java. Ví dụ, bạn muốn tạo file lưu kết quả đầu ra chương trình, hoặc quyết định đọc dữ liệu từ file sau đó xử lý bởi chương trình.
Đó là lúc thư viện java.io xuất hiện. Thư viện java.io cung cấp nhiều phương thức dùng làm việc với file trong Java.
Hướng dẫn này sẽ thảo luận cách dùng lớp File, FileReader, và FileWriter của Java và các phương thức cốt lõi của chúng. Hướng dẫn cũng tham khảo ví dụ mỗi phương thức trong sử dụng, minh họa cách dùng trong mã.
File Trong Java
File là mục trong máy tính lưu trữ thông tin cụ thể. Ví dụ, file có thể lưu danh sách tên học sinh lớp toán, hoặc danh sách nguyên liệu làm bánh cà phê. Thư mục (directories) là folder lưu tập hợp file và thư mục khác.
Thư viện java.io bao gồm nhiều gói dùng làm việc với file và thư mục trong Java. Hướng dẫn này tập trung vào gói File, FileReader, và FileWriter của Java.
Vì phương thức các gói này thuộc gói bên ngoài, trước hết cần nhập (import) các gói này trước khi dùng trong mã.
Mã nhập lớp File, FileReader, và FileWriter vào chương trình:
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
Bây giờ đã biết cách nhập lớp file Java sẽ làm việc trong hướng dẫn, chúng ta sẵn sàng tiến hành.
Tạo File Java
Lớp File của Java dùng tạo file rỗng trong Java.
Trước khi tạo file, cần tạo đối tượng File. Đối tượng file là biểu diễn file hoặc thư mục cụ thể trong mã. Tuy nhiên, đối tượng file không tự tạo file. Cần tạo đối tượng file trước, sau đó dùng nó tạo file.
Cú pháp tạo đối tượng file trong Java:
File fileName = newFile(String filePath);
Trong ví dụ này, tạo đối tượng hệ thống file tên fileName. Đối tượng file này liên quan đến file hoặc thư mục lưu tại đường dẫn file chỉ định trong biến filePath.
Để tạo file trong Java, dùng phương thức createNewFile(). createNewFile() tạo file mới tại đường dẫn file chỉ định. Phương thức trả về true nếu file mới được tạo, false nếu đã có file tại vị trí chỉ định.
Giả sử tạo chương trình phân tích dữ liệu phân tích hiệu suất cổ phiếu lịch sử S&P 500 năm 2019. Trước khi phân tích dữ liệu, muốn tạo file mới lưu thông tin chi tiết chương trình tạo. Có thể dùng mã sau tạo file lưu kết quả phân tích:
import java.io.File; class CreateFile { public static void main(String[] args) { File resultsFile = new File("/home/data_analysis/2019sandp500/result.txt"); boolean fileCreated = resultsFile.createNewFile(); if (fileCreated) { System.out.println("The results file has been created."); } else { System.out.println("The results file already exists."); } } }
Khi chạy mã, file tại đường dẫn /home/data_analysis/2019sandp500/result.txt được tạo. Sau đó phản hồi sau trả về bảng điều khiển:
The results file has been created.
Tuy nhiên, nếu file thử tạo đã tồn tại, thông báo sau trả về bảng điều khiển:
The results file already exists.
Phân tích mã: Đầu tiên nhập java.io.File bao gồm phương thức file dùng trong mã. Sau đó tạo lớp CreateFile chứa mã chương trình.
Dòng đầu chương trình chính, tạo đối tượng file resultsFile biểu diễn file tại đường dẫn /home/data_analysis/2019sandp500/result.txt. Sau đó dùng phương thức createNewFile() tạo file mới tại đường dẫn chỉ định. Kết quả boolean của createNewFile() lưu trong biến fileCreated.
Dòng tiếp theo, tạo câu lệnh if. Nếu fileCreated bằng true, thông báo The results file has been created. in ra bảng điều khiển; ngược lại, The results file already exists. in ra. Trong trường hợp này, file kết quả không tồn tại, nên mã tạo file mới và in The results file has been created. ra bảng điều khiển.
Đọc File Java
Phương thức read() trong lớp FileReader của Java dùng đọc nội dung file Java.
Giả sử có file /home/data_analysis/2019sandp500/raw_message.txt muốn truy cập trong mã. File này chứa văn bản:
JAVA S&P 500 ANALYSIS PROGRAM
Có thể đọc file bằng mã sau:
import java.io.FileReader; class Main { public static void main(String[] args) { char[] array = new char[100]; try { FileReader fileContents = new FileReader("/home/data_analysis/2019sandp500/raw_message.txt"); fileContents.read(array); System.out.println(array); fileContents.close(); } catch(Exception error) { error.getStackTrace(); } } }
Mã trả về:
JAVA S&P 500 ANALYSIS PROGRAM
Trong chương trình, dùng lớp FileReader tạo đối tượng file biểu diễn nội dung file lưu tại /home/data_analysis/2019sandp500/raw_message.txt. Sau đó dùng phương thức read() đọc nội dung file vào mảng. Cuối cùng in nội dung mảng ra bảng điều khiển và dùng close() đóng file.
Ghi Vào File Java
Phương thức write() từ gói FileWriter dùng ghi vào file trong Java.
Giả sử muốn ghi ngày hôm nay lên đầu file kết quả lưu kết quả chương trình phân tích dữ liệu. File lưu tại đường dẫn /home/data_analysis/2019sandp500/results.txt. Có thể làm bằng mã:
import java.io.FileWriter; class Main { public static void main(String args[]) { String date = "Thursday, March 12th"; try { FileWriter writeToFile = new FileWriter("/home/data_analysis/2019sandp500/results.txt"); writeToFile.write(date); writeToFile.close(); System.out.println("The date has been written to the file."); } catch (Exception error) { error.getStackTrace(); } }
Mã ghi Thursday, March 12th vào file /home/data_analysis/2019sandp500/results.txt và in sau ra bảng điều khiển:
The date has been written to the file.
Nội dung file results.txt ghi trong chương trình:
Thursday, March 12th
Trong ví dụ trên, dùng phương thức FileWriter ghi câu vào file Java. Đầu tiên khai báo biến writeToFile() tạo biểu diễn file lưu tại đường dẫn /home/data_analysis/2019sandp500/results.txt. Phương thức write() ghi chuỗi vào file, sau đó dùng close() method đóng file.
Xóa File Trong Java
Gói File của Java cung cấp phương thức xóa file hoặc thư mục - delete().
delete() trả về true nếu file chỉ định bị xóa, false nếu file không tồn tại. Ngoài ra, phương thức delete() chỉ xóa thư mục không có nội dung.
Giả sử muốn xóa file results.txt đầu chương trình để sau ghi dữ liệu mới vào file. Có thể làm bằng mã:
import java.io.File; class Main { public static void main(String[] args) { File results = newFile("/home/data_analysis/2019sandp500/results.txt"); boolean deleteFile = results.delete(); if (deleteFile) { System.out.println("results.txt has been deleted."); } else { System.out.println("results.txt has not been deleted."); } } }
Mã xóa nội dung file results.txt và in sau ra bảng điều khiển:
results.txt has been deleted.
Trong ví dụ, tạo đối tượng File tên results biểu diễn nội dung file results.txt. Sau đó dùng phương thức delete() xóa nội dung file.
Nếu file results.txt xóa thành công - như ví dụ trên - thông báo results.txt has been deleted. in ra bảng điều khiển. Ngược lại, results.txt has not been deleted. in ra.
Kết Luận
Gói File của Java dùng tạo và xóa file, gói FileReader đọc nội dung file, và gói FileWriter ghi vào file.
Hướng dẫn này thảo luận, kèm ví dụ, cách dùng gói File, FileReader, và FileWriter của Java làm việc với file trong mã. Bây giờ bạn sẵn sàng bắt đầu làm việc với file trong Java như lập trình viên chuyên nghiệp!