MST

星途 面试题库

面试题:Java BIO异常处理之资源管理与异常

在使用Java BIO进行文件读取操作时,假设你需要依次打开文件输入流、BufferedReader,在读取过程中如果出现异常,如何在异常处理中确保这些资源能够正确关闭,并且不产生内存泄漏?请给出代码示例。
24.5万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class FileReadExample {
    public static void main(String[] args) {
        FileInputStream fis = null;
        BufferedReader br = null;
        try {
            fis = new FileInputStream("your_file_path");
            br = new BufferedReader(new InputStreamReader(fis));
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
  1. 上述代码中,定义了FileInputStreamBufferedReader变量,并初始化为null
  2. try块中,打开文件输入流和BufferedReader进行文件读取操作。
  3. catch块中捕获可能出现的IOException,并打印堆栈信息以便调试。
  4. finally块中,首先检查BufferedReader是否为null,如果不为null,则尝试关闭它,同样地,对FileInputStream也进行这样的操作。通过这种方式,无论读取过程中是否出现异常,都能确保打开的资源被正确关闭,避免内存泄漏。