zoukankan      html  css  js  c++  java
  • java优雅关闭io流

    教科书关闭的方法是每个都需要判断是否为空,每个都调用close。而且每个都需要在自己的try catch里面调用

    如下图

       InputStream is=null;
            InputStreamReader isr=null;
            BufferedReader read=null;
            try {
             is = new FileInputStream(new File(""));
             isr = new InputStreamReader(is);
             read = new BufferedReader(isr);
    
                String s = read.readLine();
    
            } finally {
                 try {
                      if(null!=is){
                          is.close();
                      }
                 }catch (Exception e){
                     e.printStackTrace();
                 }
                try {
                    if(null!=isr){
                        isr.close();
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
    
                try {
                    if(null!=read){
                        read.close();
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            }

    但是io对象都来自接口Closeable,可以通过这个来关闭。

    通过apache的ioutil包提供了良好的方法

    如下图

      InputStream is=null;
            InputStreamReader isr=null;
            BufferedReader read=null;
            try {
             is = new FileInputStream(new File(""));
             isr = new InputStreamReader(is);
             read = new BufferedReader(isr);
    
                String s = read.readLine();
    
            } finally {
                IOUtils.closeQuietly(read,isr,is);
            }

    查看源代码

    public static void closeQuietly(Closeable... closeables) {
        if (closeables != null) {
            Closeable[] arr$ = closeables;
            int len$ = closeables.length;
    
            for(int i$ = 0; i$ < len$; ++i$) {
                Closeable closeable = arr$[i$];
                closeQuietly(closeable);
            }
    
        }
    }
    public static void closeQuietly(Closeable closeable) {
        try {
            if (closeable != null) {
                closeable.close();
            }
        } catch (IOException var2) {
            ;
        }
    
    }

    就是遍历关闭

  • 相关阅读:
    通过10g新特性得到PGA的调整建议
    震惊世界的中国秘方
    双休
    诺基亚的使用口令
    甲骨文承诺支持Sun硬件业务 闭口不谈MySQL
    ORACLE ERP 的前世今生
    企业渠道扩张千万别盲目
    已加密的pdf文件的解密方法
    AJAX跨域笔记
    php Could not execute xxx:__conroller
  • 原文地址:https://www.cnblogs.com/fangyuandoit/p/13713839.html
Copyright © 2011-2022 走看看