Java close()

Định nghĩa Java close()

Trong Java, phương thức close() được sử dụng để giải phóng các tài nguyên mà một đối tượng chiếm giữ, chẳng hạn như kết nối đến một cơ sở dữ liệu, luồng (stream) hoặc tệp tin. Phương thức này thường được sử dụng trong các lớp thuộc gói java.io và java.sql, bao gồm InputStream, OutputStream, Connection, và các đối tượng tương tự.

Cú pháp

Cú pháp của phương thức close() rất đơn giản. Bạn chỉ cần gọi nó trên một đối tượng đã mở tài nguyên. Ví dụ:

object.close();

Ví dụ

1. Ví dụ với FileInputStream

Dưới đây là một ví dụ về cách sử dụng close() với FileInputStream để đọc nội dung của một tệp tin:

import java.io.FileInputStream;
import java.io.IOException;

public class CloseExample {
    public static void main(String[] args) {
        FileInputStream fis = null;
        try {
            fis = new FileInputStream("example.txt");
            int data = fis.read();
            while(data != -1) {
                System.out.print((char) data);
                data = fis.read();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // Đảm bảo rằng tài nguyên được đóng
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

2. Ví dụ với JDBC Connection

Trong trường hợp làm việc với cơ sở dữ liệu sử dụng JDBC, bạn cũng nên gọi phương thức close() để đóng kết nối:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JdbcCloseExample {
    public static void main(String[] args) {
        Connection conn = null;
        try {
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");
            // Thực hiện các thao tác với cơ sở dữ liệu
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // Đảm bảo rằng kết nối được đóng
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

3. Sử dụng try-with-resources

Kể từ Java 7, bạn có thể sử dụng cấu trúc try-with-resources, tự động đóng tài nguyên mà không cần phải gọi close() trong khối finally. Ví dụ:

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

public class TryWithResourcesExample {
    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Kết luận

Phương thức close() rất quan trọng trong Java để quản lý tài nguyên và tránh rò rỉ bộ nhớ. Điều này giúp đảm bảo rằng chương trình của bạn hoạt động hiệu quả và không gặp phải các vấn đề liên quan đến tài nguyên không được giải phóng. Hãy luôn nhớ đóng các tài nguyên mà bạn đã mở khi không còn sử dụng chúng nữa!