前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java try with resources方式关闭资源

java try with resources方式关闭资源

作者头像
IT云清
发布2019-01-22 15:05:41
7610
发布2019-01-22 15:05:41
举报
文章被收录于专栏:IT云清IT云清
在我们使用资源时,一般资源使用完毕,都需要把资源关闭掉,在JDK7之前,我们一般都是使用try-catch-finally在finally中进行资源的关闭。
示例如下:
代码语言:javascript
复制
    public static void test1(){
        FileInputStream ins = null;
        FileOutputStream out = null;
        try {
            ins = new FileInputStream(new File("G://aa.text"));
            out = new FileOutputStream(new File("G://bb.text"));
            //业务逻辑
        }catch (FileNotFoundException ex){
            ex.printStackTrace();
        }finally {
            //关闭资源
            if(ins != null){
                try {
                    ins.close();
                }catch (Exception insex){
                    insex.printStackTrace();
                }
            }
            if(out != null){
                try {
                    out.close();
                }catch (Exception outex){
                    outex.printStackTrace();
                }
            }
        }
    }
我们使用了输入流和输出流,在使用完后,需要手动去关闭。
在jdk7后,提供了一种新的方式:try-with-resources 方式来管理资源,在try中声明资源,当程序执行完后,会自动将声明的资源关闭掉,方式如下:
代码语言:javascript
复制
    public static void test2(){
        try(FileInputStream ins = new FileInputStream(new File("G:/aa.text"));
            FileOutputStream out = new FileOutputStream(new File("G://bb.text"))){
            //业务逻辑
        }catch (FileNotFoundException fnex){
            fnex.printStackTrace();
        }catch (IOException ioex){
            ioex.printStackTrace();
        }
    }

附: 资源一般是指:实现了Closeable接口或者AutoCloseable接口,这种资源使用完毕后都需要关闭。

代码语言:javascript
复制
package java.io;

import java.io.IOException;

/**
 * A {@code Closeable} is a source or destination of data that can be closed.
 * The close method is invoked to release resources that the object is
 * holding (such as open files).
 *
 * @since 1.5
 */
public interface Closeable extends AutoCloseable {

    /**
     * Closes this stream and releases any system resources associated
     * with it. If the stream is already closed then invoking this
     * method has no effect.
     *
     * <p> As noted in {@link AutoCloseable#close()}, cases where the
     * close may fail require careful attention. It is strongly advised
     * to relinquish the underlying resources and to internally
     * <em>mark</em> the {@code Closeable} as closed, prior to throwing
     * the {@code IOException}.
     *
     * @throws IOException if an I/O error occurs
     */
    public void close() throws IOException;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年07月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在我们使用资源时,一般资源使用完毕,都需要把资源关闭掉,在JDK7之前,我们一般都是使用try-catch-finally在finally中进行资源的关闭。
  • 示例如下:
  • 我们使用了输入流和输出流,在使用完后,需要手动去关闭。
  • 在jdk7后,提供了一种新的方式:try-with-resources 方式来管理资源,在try中声明资源,当程序执行完后,会自动将声明的资源关闭掉,方式如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档