• 带资源的try语句块介绍


    在我们使用try() catch(){}的时候,如果涉及到流操作,经常需要关闭流比如:

     1         File file = new File("C:/Users/test.done");
     2         File newFile = new File(file.getAbsolutePath().replaceAll("\.done$",".txt"));
     3         BufferedReader bufferedReader = null;
     4         BufferedWriter bufferedWriter = null;
     5         String line = "";
     6         try {
     7             bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
     8             bufferedWriter = new BufferedWriter(new FileWriter(newFile));
     9             while ((line = bufferedReader.readLine()) != null) {
    10                 bufferedWriter.write(line+System.lineSeparator());
    11             }
    12         } catch (Exception e) {
    13             e.printStackTrace();
    14         } finally {
    15             if(null != bufferedReader){
    16                 try {
    17                     bufferedReader.close();
    18                 } catch (IOException e) {
    19                     e.printStackTrace();
    20                 }
    21             }
    22             if(null != bufferedWriter){
    23                 try {
    24                     bufferedWriter.close();
    25                 } catch (IOException e) {
    26                     e.printStackTrace();
    27                 }
    28             }
    29         }

    代码比较繁琐且很不方便,因此有简化的写法:

     1      File file = new File("C:/Users/test.done");
     2         File newFile = new File(file.getAbsolutePath().replaceAll("\.done$",".txt"));
     3         String line = "";
     4         try(BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
     5                 BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(newFile));) {
     6             while ((line = bufferedReader.readLine()) != null) {
     7                 bufferedWriter.write(line+System.lineSeparator());
     8             }
     9         } catch (Exception e) {
    10             e.printStackTrace();
    11         } 

    这种带资源的try语句(try-with-resource)在try块退出时,会自动调用bufferedReader.close()和bufferedWriter.close()方法,关闭资源,是不是很方便。

  • 相关阅读:
    多态小结
    Lambda小结
    网络编程小结
    内部类与Lambda
    线程小结
    关于java的静态绑定与动态绑定小结
    多线程
    英语语法十二(可数名词不规则变化)
    英语语法入门十四(名词的作用)
    英语语法入门十三(不可数名词)
  • 原文地址:https://www.cnblogs.com/qqq9527/p/12199949.html
Copyright © 2020-2023  润新知