Java7 try-with-resource 使用多个资源

您可以在一个 Java try-with-resources 块中使用多个资源,并让它们全部自动关闭。下面是一个在 try-with-resources 块中使用多个资源的示例:

package com.hxstrive.jdk7.try_with_resources;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;

/**
 * JDK7 新特性 try-with-resources
 * @author hxstrive.com
 */
public class TryWithResourcesDemo2 {

    public static void main(String[] args) throws Exception {
        try(
            FileInputStream input = new FileInputStream("D:\\test.txt");
            BufferedReader reader = new BufferedReader(new InputStreamReader(input))
        ) {
            String line;
            while((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        }
    }

}

本例在 try 关键字后的括号内创建了两个资源。一个 FileInputStream 和一个 BufferedReader。当执行离开 try 代码块时,这两个资源都将自动关闭。

资源关闭顺序

在 Java try-with-resources 结构中声明的资源将按照其创建/在括号内列出的相反顺序关闭。例如:

try(
    FileInputStream input = new FileInputStream("D:\\test.txt");
    BufferedReader reader = new BufferedReader(new InputStreamReader(input))
) {
    //...
}

上面示例中,首先关闭的是 reader,然后才是 input。

这种关闭顺序的设计是为了确保资源的正确释放,避免可能出现的资源泄漏问题。比如,如果一个资源的关闭依赖于另一个资源先关闭并释放相关的资源或状态,按照声明的相反顺序关闭就能保证这种依赖关系的正确处理。这和我们手动关闭 IO 资源和 JDBC 资源类似。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号