Java使用 try-with-resources 实现自动关闭资源的方法
作者:C、空白格 时间:2022-01-09 06:54:46
1、 在Java1.7之前,我们需要通过下面这种方法, 在finally中释放资源,这种方法有点繁琐。
BufferedReader br = null;
String str;
try {
br = new BufferedReader(new FileReader(""));
while ((str = br.readLine()) != null) {
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2、在java1.7之后,可以使用try-with-resources实现自动关闭资源
try (BufferedReader br = new BufferedReader(new FileReader(""))) {
while ((str = br.readLine()) != null) {
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
}
这样看上去,是不是感觉代码干净了许多,当程序运行完离开try语句块时,( )里的资源就会被自动关闭。
但是try-with-resources还有几个关键点要记住:
①、try()里面的类,必须实现了AutoCloseable接口。
②、在try()代码中声明的资源被隐式声明为fianl。
③、使用分号分隔,可以声明多个资源。
3、自定义类并实现AutoCloseable接口
class TestAutoClosable implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println("close");
}
public void test() {
System.out.println("test");
}
}
接下来我们测试下,我们写得自定义类
try (BufferedReader br = new BufferedReader(new FileReader("E:/test.txt"));
TestAutoClosable testAutoClosable = new TestAutoClosable()) {
testAutoClosable.test();
} catch (Exception e) {
e.printStackTrace();
}
当调用testAutoClosable.test()方法时,下面是控制台打印的:
test
close
可以看到资源被成功关闭。
来源:https://blog.csdn.net/qq_39486119/article/details/106782848
标签:java,try-with-resources,关闭资源
0
投稿
猜你喜欢
Java 8新特性方法引用详细介绍
2023-06-22 08:31:50
C# 实现绘制PDF嵌套表格案例详解
2023-05-25 11:57:13
MybatisPlus中@TableField注解的使用详解
2021-11-01 23:05:35
Java synchronized轻量级锁实现过程浅析
2022-05-08 07:28:55
mybatis foreach遍历LIST读到数据为null的问题
2021-05-24 20:15:27
深入探究Java线程的状态与生命周期
2021-10-01 17:44:10
浅析Android 模拟键盘鼠标事件
2022-12-19 00:11:14
java实现国产sm4加密算法
2022-02-14 06:27:08
Android实现接近传感器
2023-02-18 08:28:01
C#中变量、常量、枚举、预处理器指令知多少
2021-05-26 18:29:11
浅谈Java中Int、Integer、Integer.valueOf()、new Integer()之间的区别
2023-10-29 20:08:53
浅谈android @id和@+id的区别
2021-10-28 06:06:09
SpringBoot中的五种对静态资源的映射规则的实现
2023-06-21 08:31:47
Android日期选择器实现年月日三级联动
2022-12-13 03:35:59
Android自定义短信验证码组件
2022-10-06 00:30:13
关于Java 中 Future 的 get 方法超时问题
2022-09-27 07:58:18
java操作json对象出现StackOverflow错误的问题及解决
2023-03-04 20:06:14
Android 实现九宫格抽奖功能
2021-10-02 21:42:27
Android 仿苹果IOS6开关按钮
2023-11-21 15:16:08
Android Framework如何实现Binder
2021-12-09 03:54:20