34. File và I/O trong lập trình java

Trong lập trình Java, I/O (Input/Output) được sử dụng để thực hiện các thao tác đọc (input) và ghi (output) dữ liệu từ và đến các nguồn dữ liệu như tệp tin, mạng, hay các luồng dữ liệu.

Java cung cấp một số lớp và giao diện để thao tác với I/O. Dưới đây là một số khái niệm cơ bản về I/O trong Java:

  1. Byte Stream và Character Stream: Trong Java, có hai loại luồng I/O chính:
    • Byte Stream: Được sử dụng để đọc và ghi các dữ liệu nhị phân (byte), ví dụ như dữ liệu hình ảnh hoặc tệp nhị phân.
    • Character Stream: Được sử dụng để đọc và ghi các dữ liệu dạng ký tự (character), ví dụ như đọc và ghi văn bản.
  2. Lớp File: Lớp này được sử dụng để thao tác với thông tin liên quan đến tệp và thư mục trên hệ thống tệp. Bạn có thể tạo, xóa, kiểm tra sự tồn tại của tệp hoặc thư mục bằng cách sử dụng lớp File.
  3. Luồng (Stream): Luồng là cơ chế trong Java để đọc và ghi dữ liệu từ và đến nguồn dữ liệu. Có nhiều lớp luồng được cung cấp trong Java như FileInputStream, FileOutputStream, FileReader, FileWriter, v.v.
  4. Giao diện CloseableAutoCloseable: Các luồng I/O cần được đóng sau khi sử dụng để giải phóng tài nguyên hệ thống. Interface CloseableAutoCloseable được sử dụng để thực hiện việc đóng luồng một cách tự động khi không còn sử dụng.

Dưới đây là ví dụ minh họa về việc đọc và ghi dữ liệu từ và vào một tệp văn bản sử dụng Character Stream:

java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileExample {
    public static void main(String[] args) {
        // Viết dữ liệu vào tệp văn bản
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"))) {
            writer.write("Hello, this is an example text.");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Đọc dữ liệu từ tệp văn bản
        try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Trong ví dụ trên, chúng ta sử dụng BufferedReaderBufferedWriter để thực hiện việc đọc và ghi dữ liệu từ và vào tệp văn bản. Lưu ý rằng chúng ta sử dụng khối try-with-resources để tự động đóng các luồng sau khi sử dụng xong.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top