Java - 使用 try-with-resources 实现自动关闭资源

简介: Java - 使用 try-with-resources 实现自动关闭资源

1、在Java1.7之前,我们需要通过下面这种方法, 在finally中释放资源,这种方法有点繁琐。

BufferedReaderbr=null;
Stringstr;
try {
br=newBufferedReader(newFileReader(""));
while ((str=br.readLine()) !=null) {
System.out.println(str);
    }
} catch (IOExceptione) {
e.printStackTrace();
} finally {
if (br!=null) {
try {
br.close();
        } catch (IOExceptione) {
e.printStackTrace();
        }
    }
}

2、在Java1.7之后,可以使用try-with-resources实现自动关闭资源

try (BufferedReaderbr=newBufferedReader(newFileReader(""))) {
while ((str=br.readLine()) !=null) {
System.out.println(str);
    }
} catch (IOExceptione) {
e.printStackTrace();
}

这样看上去,是不是感觉代码干净了许多,当程序运行完离开try语句块时,( )里的资源就会被自动关闭。

但是try-with-resources还有几个关键点要记住:

①、try()里面的类,必须实现了AutoCloseable接口。

②、在try()代码中声明的资源被隐式声明为fianl。

③、使用分号分隔,可以声明多个资源。

3、自定义类并实现AutoCloseable接口

classTestAutoClosableimplementsAutoCloseable {
@Overridepublicvoidclose() throwsException {
System.out.println("close");
    }
publicvoidtest() {
System.out.println("test");
    }
}

接下来我们测试下,我们写得自定义类

try (BufferedReaderbr=newBufferedReader(newFileReader("E:/test.txt"));
TestAutoClosabletestAutoClosable=newTestAutoClosable()) {
testAutoClosable.test();
} catch (Exceptione) {
e.printStackTrace();
}

当调用testAutoClosable.test()方法时,下面是控制台打印的,可以看到资源被成功关闭。

test

close

目录
相关文章
|
5月前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
80 0
|
3天前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
18 2
|
2月前
|
安全 Java 网络安全
【认知革命】JAVA网络编程新视角:重新定义URL与URLConnection,让网络资源触手可及!
【认知革命】JAVA网络编程新视角:重新定义URL与URLConnection,让网络资源触手可及!
39 2
|
2月前
|
Java 开发者
Java中的异常处理:深入探讨try-with-resources语句
【8月更文挑战第13天】在Java的世界中,异常处理是维护程序健壮性的关键环节。随着语言的发展,新的异常处理机制被引入以简化代码和提高资源管理的效率。本文将深入探讨try-with-resources语句,一种旨在简化资源管理的异常处理结构,它如何改变了我们处理资源的模式,以及这一机制背后的核心原理和实际应用中的最佳实践。
|
2月前
|
Java 数据库连接 开发者
Java中的异常处理:深入理解try-with-resources语句
在Java的编程世界中,异常处理是维护应用程序健壮性不可或缺的一环。随着语言的发展,try-with-resources语句成为了优雅管理资源的新宠。本文将带你领略这一特性的魅力,从基本用法到背后的原理,再到实际应用案例,让你对try-with-resources有一个全面而深入的理解。
|
2月前
|
Java 数据库连接 开发者
Java中的异常处理:深入探索try-with-resources语句
在Java的世界中,异常处理是代码健壮性的基石之一。随着语言的发展,新的异常处理特性不断涌现,其中最为引人注目的便是try-with-resources语句。这一创新不仅简化了资源管理,还提升了代码的可读性和效率。本文将揭开try-with-resources的神秘面纱,探讨其背后的原理、使用方法及其带来的变革。
41 3
|
3月前
|
缓存 前端开发 Java
在Java项目中实现跨域资源共享(CORS)
在Java项目中实现跨域资源共享(CORS)
|
3月前
|
安全 Java 数据库连接
Java中的异常处理:深入理解try-with-resources语句
在Java的异常处理领域,try-with-resources语句是一个重要的特性,它简化了资源管理并提高了代码的可读性。本文将详细探讨try-with-resources的工作原理、使用场景以及如何正确运用这一结构来优化资源管理,同时指出常见的误用情况和最佳实践。
98 0
|
3月前
|
Java Go 调度
Java演进问题之协程和线程在资源占用和切换速度上不同如何解决
Java演进问题之协程和线程在资源占用和切换速度上不同如何解决
|
3月前
|
Java Docker 容器
Java演进问题之Java的资源占用如何解决
Java演进问题之Java的资源占用如何解决