转载请注明出处:https://blog.csdn.net/l1028386804/article/details/80395882
Java 7 的编译器和运行环境支持新的 try-with-resources 语句,称为 ARM 块(Automatic Resource Management) ,自动资源管理。
新的语句支持包括流以及任何可关闭的资源,例如,一般我们会编写如下代码来释放资源:
public static void filyCopy(File one,File two){ FileInputStream fileInput = null; FileOutputStream fileOutput = null; try { fileInput = new FileInputStream(one); fileOutput = new FileOutputStream(two); byte[] b = new byte[1024]; int len = 0; while((len = fileInput.read(b)) != -1){ fileOutput.write(b, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally {//释放资源 try { if(fileInput != null){ fileInput.close(); } if(fileOutput != null){ fileOutput.close(); } } catch (Exception e2) { e2.printStackTrace(); } } }
使用 try-with-resources 语句来简化代码如下:
public static void filyCopy2(File one,File two){ try (FileInputStream fileInput = new FileInputStream(one); FileOutputStream fileOutput = new FileOutputStream(two);){ byte[] b = new byte[1024]; int len = 0; while((len = fileInput.read(b)) != -1){ fileOutput.write(b, 0, len); } } catch (Exception e) { e.printStackTrace(); } }
在这个例子中,数据流会在 try 执行完毕后自动被关闭,前提是,这些可关闭的资源必须实现 java.lang.AutoCloseable 接口。
相关推荐
try-with-resources 语句中的资源只能是实现了java.lang.AutoCloseable接口的类实例,但是 Java SE 7 之後的所有实现了java.io.Closeable的类都实现了java.lang.AutoCloseable接口(该接口是在Java SE 7中才引入的)...
process方法用于处理日志文件,它使用了try-with-resources语句来确保资源被正确关闭。在该方法中,创建了一个FileWriter对象用于写入日志文件,并使用PrintWriter对象进行格式化输出。如果在处理过程中发生异常,会...
JDK1.7新特性介绍 1. 对Java集合(Collections)的...7. 增加了try-with-resources语句,确保每个资源都在生命周期结束后被关闭 8. 使用泛型增加了类型推断机制 9. 增加了fork/join框架来增强对处理多核并行计算的支持
其中对于流的关闭,jdk1.7以上还实现了try-with-resources语句,其原理与上述方法相同。 事务的操作以及数据库锁机制: Spring框架提供了编程式事务管理和声明式事务管理 编程式事务管理: 可以清楚地控制事务的...
为了在Java 1.4上运行具有泛型的Java 5代码, Retrolambda允许您在Java 7、6或5上运行带有lambda表达式,方法引用和try-with-resources语句的Java 8代码。它可以在较旧的Java运行时上运行。 转换后,它们只是一堆...
JavaPOC 概念验证:Apache HttpComponents获得请求,Junit,JMockit,Basic Maven POM,还更多地暴露于.gitignore概念还包括Java 7+ try-with-resources语句,该语句关闭所有可关闭的资源,而不必将它们放在finally...
try-with-resources语句保证了每个声明了的`资源在语句结束的时候都会被关闭`。任何实现了java.lang.`AutoCloseable`接口的对象,和实现了java .io .`Closeable`接口的对象,`都可以当做资源使用`。 ``` try ( ...
9.1.1 try-with-resources语句 190 9.1.2 忽略异常 191 9.1.3 捕获多个异常 192 9.1.4 更简单地处理反射方法的异常 193 9.2 使用文件 193 9.2.1 Path 194 9.2.2 读取和写入文件 196 9.2.3 创建文件和目录 197 9.2.4 ...
支持try-with- resources 引入 Java nio.2开发包; ·数值类型可以用2进制字符串表示,并且可以在字符串表示中添加下划线; 钻石型语法; nu值的自动处理。 Java 8 函数式接口 Lambda表达式 接口的增强 运行时数据区域...
MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...