当前位置:   article > 正文

Java - 使用 try-with-resources 实现自动关闭资源_使用try-with-resources关闭filereader和bufferedreader

使用try-with-resources关闭filereader和bufferedreader

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

  1. BufferedReader br = null;
  2. String str;
  3. try {
  4. br = new BufferedReader(new FileReader(""));
  5. while ((str = br.readLine()) != null) {
  6. System.out.println(str);
  7. }
  8. } catch (IOException e) {
  9. e.printStackTrace();
  10. } finally {
  11. if (br != null) {
  12. try {
  13. br.close();
  14. } catch (IOException e) {
  15. e.printStackTrace();
  16. }
  17. }
  18. }

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

  1. try (BufferedReader br = new BufferedReader(new FileReader(""))) {
  2. while ((str = br.readLine()) != null) {
  3. System.out.println(str);
  4. }
  5. } catch (IOException e) {
  6. e.printStackTrace();
  7. }

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

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

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

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

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

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

  1. class TestAutoClosable implements AutoCloseable {
  2. @Override
  3. public void close() throws Exception {
  4. System.out.println("close");
  5. }
  6. public void test() {
  7. System.out.println("test");
  8. }
  9. }

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

  1. try (BufferedReader br = new BufferedReader(new FileReader("E:/test.txt"));
  2. TestAutoClosable testAutoClosable = new TestAutoClosable()) {
  3. testAutoClosable.test();
  4. } catch (Exception e) {
  5. e.printStackTrace();
  6. }

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

test

close

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/590719
推荐阅读
相关标签
  

闽ICP备14008679号