Đọc và ghi tệp

Nhập/Xuất và Streams trong Java

Alex Liu

Software Development Engineer

Ép kiểu

  • Chuyển đổi giữa các kiểu dữ liệu nguyên thủy

  • Ép kiểu mở rộng (widening) - tự động từ kích thước nhỏ -> lớn

    • byte -> short -> char -> int -> long -> float -> double
// Ép kiểu mở rộng - tự động
byte myByte = 8;
int myInt = myByte;
  • Ép kiểu thu hẹp (narrowing) - thủ công, từ lớn -> nhỏ
// Ép kiểu thu hẹp - thực hiện thủ công
double myDouble = 3.14;
int myInt = (int) myDouble; // Lưu ý (int)
Nhập/Xuất và Streams trong Java

Hiểu ép kiểu cụ thể khi đọc tệp

  • Ép từ int sang char: char data = (char) 123;
// Giá trị Unicode cho ký tự 'a'
int data = 97;
// In trực tiếp dữ liệu ở dạng `int`
System.out.print(data);
// Ép từ `int` sang `char` rồi in
System.out.print((char)data);
97
a
1 https://www.ascii-code.com/
Nhập/Xuất và Streams trong Java

Đọc dữ liệu từ tệp bằng FileReader

  • Import lớp FileReader để bật chức năng đọc tệp
import java.io.FileReader;
  • Đọc tệp, in lần lượt từng ký tự rồi đóng tệp
FileReader fr = new FileReader("example.txt");
int data = fr.read();
// Đọc và in từng ký tự
while (data != -1) {
    System.out.print((char) data);
    data = fr.read();
}
fr.close(); // Đóng tệp để giải phóng tài nguyên
Nhập/Xuất và Streams trong Java

Đọc hiệu quả với BufferedReader

  • BufferedReader - import java.io.BufferedReader;
    • Đọc tệp văn bản theo từng dòng
    • Hiệu quả hơn cho tệp lớn
// Tạo đối tượng BufferedReader
BufferedReader br = new BufferedReader(new FileReader("example.txt"));
String line;
// Dùng .readLine() để đọc từng dòng
while ((line = br.readLine())!= null){
  System.out.println(line);
}
br.close();
Nhập/Xuất và Streams trong Java

Ghi dữ liệu bằng FileWriter

  • FileWriter:
    • Mặc định sẽ ghi đè nội dung hiện có — thận trọng để tránh mất dữ liệu!
  • Import FileWriter
import java.io.FileWriter;


// Tạo đối tượng `FileWriter` mới FileWriter fw = new FileWriter("example.txt"); // Ghi dữ liệu vào tệp bằng `.write() fw.write("Overwriting the file."); fw.close()
Nhập/Xuất và Streams trong Java

Nối dữ liệu bằng FileWriter

  • FileWriter
    • Cho phép nối thêm dữ liệu bằng chế độ append, không ghi đè nội dung cũ

$$

// Khởi tạo `FileWriter` với chế độ append
FileWriter fw = new FileWriter("example.txt", true);
// Nối thêm dữ liệu vào tệp
fw.write("Appending data.");
fw.close()
Nhập/Xuất và Streams trong Java

Ghi hiệu quả với BufferedWriter

  • BufferedWriter - import java.io.BufferedWriter;
    • Ghi văn bản hiệu quả hơn bằng các khối lớn hơn
    • Giảm số lần ghi
// Tạo đối tượng BufferedWriter
BufferedWriter bw = new BufferedWriter(new FileWriter("example.txt"));
bw.write("Writing data");

// .newLine() để thêm xuống dòng
bw.newLine(); 
bw.close();
Nhập/Xuất và Streams trong Java

Ayo berlatih!

Nhập/Xuất và Streams trong Java

Preparing Video For Download...