java7新特性--自动关闭资源

3人阅读 评论(0) 收藏 举报
分类:

格式
try(
//此处写打开资源的代码,此处创建的对象必须实现java.lang.AutoClosable接口
声明变量 变量=java.lang.AutoClosable接口的实例
)
{
}
catch{
//处理异常的方法
}
例:在java6中

public static void copy(File srcFile,File targetFile) {

    if (srcFile==null||targetFile==null) {
        System.out.println("文件为null");
        return;
    }

    InputStream in=null;
    OutputStream out=null;

    try {
        in=new FileInputStream(srcFile);
        out=new FileOutputStream(targetFile);
        byte[] b=new byte[1024];
        int len=0;
        while((len=in.read(b))!=-1){
            //取出缓存区数据,取出后立马将数据写到另一个文件
            out.write(b, 0, len);//读多少,写多少
        }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        //throw new Exception(srcFile.getAbsolutePath()+"找不到");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    finally {
        try {
            if (out!=null) {
                out.close();                    
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally {
            //无论out是否关闭,都应关闭in
            if (in!=null) {

                try {
                    in.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}

在java7中:

public static void copyByjava7(File srcFile,File targetFile){

    try
    (  InputStream in=new FileInputStream(srcFile);
        OutputStream out=new FileOutputStream(targetFile);
            //The resource type Date does not implement java.lang.AutoCloseable
            //即此处只能放实现了AutoCloseable接口的方法
            //Date date=new Date();
    )
    {
        byte[] b=new byte[1024];
        int len=0;
        while((len=in.read(b))!=-1){
            out.write(b, 0, len);
        }

    } catch (Exception e) {
        // TODO: handle exception
    }
}

转载:https://blog.csdn.net/qq_32667757/article/details/51638416

查看评论

黑马程序员----java7新特性之自动关闭资源

java.lang.Interface AutoCloseable Since: 1.7自动关闭资源接口,Closeable的一个父接口,所有实现Closeable的类都可以自动关闭。使用方法tr...
  • qq775857005
  • qq775857005
  • 2015-06-06 11:00:34
  • 331

java7新特性之一自动关闭资源

java7简化资源清理(try-with-resources)自动关闭资源的try语句,try-with-resources 是一个定义了一个或多个资源的try 声明,这个资源是指程序处理完它之后需要...
  • tuanjie108
  • tuanjie108
  • 2013-12-22 20:50:40
  • 496

Java7新特性--try-with-resources,自动关闭资源

转载地址:http://www.oschina.net/question/12_10706 从 Java 7 build 105 版本开始,Java 7 的编译器和运行环境支持新的 try-with...
  • lylwo317
  • lylwo317
  • 2016-04-20 09:40:07
  • 526

在Java7中使用try语句自动关闭资源

在java7后,在try()语句的括号里声明和初始化资源,在try语句结束时,可以自动关闭这些资源。而括号里的资源实现类必须实现AutoCloseable或Closeable接口。 例如,下面的语句使...
  • yellow_wei
  • yellow_wei
  • 2017-05-17 19:18:35
  • 78

JDK1.7新特性--自动关闭类

JDK在1.7之后出现了自动关闭类的功能,该功能的出现为各种关闭资源提供了相当大的帮助,这里我们谈一谈自动关闭类。 JDK1.7之后出现了一个重要的接口,以及改造了一个重要的方法结构: 1...
  • fjkxyl
  • fjkxyl
  • 2016-10-25 14:09:41
  • 1619

Closeable和java7自动资源释放特性

Closeable和java7自动资源释放特性 Closeable 是可以关闭的数据源或目标。调用 close 方法可释放对象保存的资源(如打开文件) closeable是一个接口,只有一...
  • X1164077611
  • X1164077611
  • 2016-05-20 22:09:05
  • 1591

Java7的那些新特性

本文介绍的java 7新特性更多的感觉像是语法糖。毕竟java本身已经比较完善了,不完善的很多比较难实现或者是依赖于某些底层(例如操作系统)的功能。不过java7也实现了类似aio的强大功能。但本文并...
  • chenleixing
  • chenleixing
  • 2015-08-20 08:50:57
  • 6177

java7 新特性 总结版

Java7语法新特性:前言,这是大部分的特性,但还有一些没有写进去,比如多核 并行计算的支持加强 fork join 框架;这方面并没有真正写过和了解。也就不写进来了。1. switch中增加对Str...
  • hjm4702192
  • hjm4702192
  • 2014-06-11 17:40:31
  • 4540

java7 实用的新特性:编程技巧

出处:http://it.deepinmind.com/java/2014/04/21/10-jdk-7-features-to-revisit-before-you-welcome-java-8.h...
  • conquer0715
  • conquer0715
  • 2016-04-27 14:10:11
  • 3808

jdk8——你可能错过的java7特性

java7发布时,大多数开发人员都关注与新的语言特性,有一些被更改了的API很少被人发现,但在我们的日常工作中却使用比较频繁。 1、异常处理改进 a、try-with-resource语句 j...
  • youzhouliu
  • youzhouliu
  • 2016-04-09 13:27:59
  • 1441
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 876
    排名: 5万+
    个人博客