zoukankan      html  css  js  c++  java
  • Java 7 新的 try-with-resources 语句,自动资源释放


    从 Java 7 build 105 版本开始,Java 7 的编译器和运行环境支持新的 try-with-resources 语句,称为 ARM 块(Automatic Resource Management) ,自动资源管理。

    新的语句支持包括流以及任何可关闭的资源,例如,一般我们会编写如下代码来释放资源:

    private static void customBufferStreamCopy(File source, File target) {
        InputStream fis = null;
        OutputStream fos = null;
        try {
            fis = new FileInputStream(source);
            fos = new FileOutputStream(target);
     
            byte[] buf = new byte[8192];
     
            int i;
            while ((i = fis.read(buf)) != -1) {
                fos.write(buf, 0, i);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        } finally {
            close(fis);
            close(fos);
        }
    }
     
    private static void close(Closeable closable) {
        if (closable != null) {
            try {
                closable.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    代码挺复杂的,异常的管理很麻烦。

    而使用 try-with-resources 语句来简化代码如下:

    private static void customBufferStreamCopy(File source, File target) {
        try (InputStream fis = new FileInputStream(source);
            OutputStream fos = new FileOutputStream(target)){
     
            byte[] buf = new byte[8192];
     
            int i;
            while ((i = fis.read(buf)) != -1) {
                fos.write(buf, 0, i);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    在这个例子中,数据流会在 try 执行完毕后自动被关闭,前提是,这些可关闭的资源必须实现 java.lang.AutoCloseable 接口。


  • 相关阅读:
    Java重命名文件
    三星Samsung 4.4.2该负责人制度,简化名单
    hdu 1203 I NEED A OFFER!
    springMVC整合JAXB
    主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思
    Objective-C路成魔【18-复制对象】
    QStyleFactory类参考
    QT QSqlQuery QSqlQueryModel
    linux mysql 卸载后重装
    更改Mysql数据库存储位置的具体步骤
  • 原文地址:https://www.cnblogs.com/edgedance/p/7075178.html
Copyright © 2011-2022 走看看