zoukankan      html  css  js  c++  java
  • 带资源的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()方法,关闭资源,是不是很方便。

  • 相关阅读:
    windows下安装php5.5的redis扩展
    redis常见命令
    HDU 5869 Different GCD Subarray Query
    WA时查错点
    HDU 3333 Turing Tree
    HDU 5868 Different Circle Permutation
    AcWing 272 最长公共上升子序列 (dp)
    中国计量大学现代科技学院第四届“中竞杯”程序设计校赛 I 题 (双端队列bfs / 优先队列bfs)
    AtCoder ARC 109 D (拆点 + 分类讨论)
    codeforces 1408D. Searchlights (暴力 + 前缀优化)
  • 原文地址:https://www.cnblogs.com/qqq9527/p/12199949.html
Copyright © 2011-2022 走看看