IO流的关闭

文章介绍了两种Java中关闭流的常见方法:一种是自定义的通用关闭流工具函数,另一种是利用try-with-resources语句的安全关闭方式。这两种方法都能确保流在使用后被正确关闭,提高程序的健壮性。try-with-resources由Java自动管理,当代码块执行完毕或出现异常时,会自动关闭实现了AutoCloseable接口的资源。建议优先使用这两种方式来关闭IO流,以保证资源的释放和程序的稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.通用关闭流工具

/**
     * 通用关闭流 工具
     * @param closeables
     */
    private void closeStream(Closeable... closeables) {
        if(ArrayUtil.isEmpty(closeables)){
            for (int i = 0; i < closeables.length; i++) {
                if(null != closeables[i]) {
                    try {
                        closeables[i].close();
                    } catch (Exception e){
                        log.error("关闭输入流异常 [{}]", e);
                    }
                }
            }
        }
    }

 2.安全的流关闭方式

        Java中流的安全关闭可以通过使用try-with-resources语句来实现。这种语句可以确保在代码块执行完毕后,自动关闭流。例如,使用try-with-resources关闭文件输入流可以像这样:
        在这个示例中,使用try-with-resources语句声明了一个FileInputStream对象,然后在try代码块中使用该对象进行操作。无论try代码块是否抛出异常,Java都会在代码块执行完毕后自动关闭FileInputStream对象。
        除了文件输入流,其他类型的流也可以使用try-with-resources语句安全地关闭,包括文件输出流、网络连接、数据库连接等等。只需要确保这些流类实现了AutoCloseable接口。

/**
 * 安全关闭流 工具
 * @param closeables
 */
try (FileInputStream fis = new FileInputStream("file.txt")) {
    // 使用文件输入流进行操作
} catch (IOException e) {
    // 异常处理
}

3. 常用流的关闭方式

//使用finally语句块显式关闭流
FileInputStream fis = null;
try {
    fis = new FileInputStream("file.txt");
    // 使用文件输入流进行操作
} catch (IOException e) {
    // 异常处理
} finally {
    if (fis != null) {
        try {
            fis.close();
        } catch (IOException e) {
            // 异常处理
        }
    }
}

 PS:建议使用第一种和第二种,第一种封装到工具类中,直接调用传入即可,第二种交给jvm自动关闭,安全性大大提高,io流的关闭特别重要,一定要关闭打开的流!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值