从 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 1.7 开始,Java 引入了 try-with-resources 语句,实现自动关闭资源。 try-with-resources 语句的基本语法是:try (资源声明) { 语句块 } catch (异常类型) { 异常处理 }。其中,资源声明是指在 try 块中的...
总的来说,JDK7的“try-with-resources”特性是Java资源管理的一个重大改进,它提高了代码的可读性和可靠性,降低了出错的可能性,同时也鼓励了更好的编程实践。通过利用这一特性,开发者可以更高效地编写和维护代码...
在Java编程语言中,"Try-with-resources"(也称为资源式代码块)是自Java 7版本引入的一项强大特性,旨在简化资源管理,特别是那些具有自动关闭功能的资源,如文件流、数据库连接、网络连接等。这一特性基于《Java ...
在 JDK 7 中引入的 try-with-resources 语句极大地简化了资源管理,特别是对于那些需要在使用后关闭的资源,如文件流、数据库连接等。然而,在早期版本中,如果要处理多个资源,代码可能会变得有些冗余。JDK 9 ...
5. **try-with-resources**:一种新的资源管理方式,自动关闭在try语句块中打开的资源,如输入/输出流。 6. **改进的类型推断**:编译器能更好地推断局部变量和匿名类的类型,减少冗余的类型声明。 7. **二进制...
这就是 try-with-resources 特性所带来的优势,是其中的资源类实现了 Java 的 AutoCloseable 接口,该接口只有一个 `close()` 方法,在退出 try 语句后会自动被执行,在 Java7 中很多涉及资源使用的类都实现了 ...
1. **try-with-resources语句**:Java 7引入了try-with-resources语句,使得自动关闭资源(如文件、数据库连接等)变得更加简便和安全。开发者不再需要在finally块中手动关闭资源,因为Java会自动处理。 2. **多...
Java中的try-with-resources语句是JDK 7引入的一个重要特性,它旨在简化资源管理,尤其是那些需要手动关闭的I/O资源,如文件输入/输出流。这一特性使得程序员能够更加优雅地处理资源释放,避免了传统的try-catch-...
- JRE7:Java 7(JRE7)是Oracle在2011年发布的版本,引入了一些新特性,比如try-with-resources语句,用于自动关闭资源,增强了switch语句等。 - JRE8:Java 8(JRE8)于2014年发布,引入了lambda表达式、函数式...
在Java 7及更高版本中,引入了一种新的语法糖,称为"try-with-resources",它使得资源管理变得更加简洁和高效。在本文中,我们将详细探讨`try()`括号中的代码含义,特别是与实现`Closeable`接口相关的知识点。 首先...
3. **改进的异常处理**:try-catch-finally语句块现在可以包含多个资源,它们会在使用后自动关闭,这是通过try-with-resources语句实现的。 4. **动态类型语言支持**:Java 7允许在方法签名中使用类型推断,这使得...
try-with-resources 语句中的资源只能是实现了java.lang.AutoCloseable接口的类实例,但是 Java SE 7 之後的所有实现了java.io.Closeable的类都实现了java.lang.AutoCloseable接口(该接口是在Java SE 7中才引入的)...
Java编程中的资源管理是至关重要的,...使用`try...finally`块或Java 7的try-with-resources语句可以有效地防止资源泄露,提高程序的稳定性和效率。理解并应用这些最佳实践,将有助于提升Java应用程序的质量和性能。
这个版本的JDK包含了对Java 7语言特性的支持,例如动态类型、钻石操作符和try-with-resources语句等。 Java 7(也称为Java SE 7或Java 7.0)是Oracle公司于2011年7月发布的一个重要更新,引入了许多新特性,旨在...
在实际开发中,为了更好的错误处理和资源管理,通常会使用try-with-resources语句和Connection池。 MySQL Connector/J 5.1.26版本可能不支持最新的MySQL特性或安全性更新,因此,对于新的项目,建议使用更现代的...
4. **改进的异常处理**:try-with-resources语句允许自动关闭实现了AutoCloseable接口的资源,从而减少了资源泄露的风险。 5. **开关表达式**:Switch语句可以接受字符串作为参数,这使得在处理枚举类型或者字符串...
7. **try-with-resources**:从Java 7开始,引入了try-with-resources语句,用于自动关闭实现了`AutoCloseable`接口的资源,避免资源泄露。 通过深入学习这个“java高端技术课程--Java异常处理详解”,开发者不仅...
6. **自动资源管理**:`try-with-resources`语句是Java 7引入的新特性,它可以确保在程序结束时正确关闭资源,如数据库连接和文件流。 7. **钻石操作符**:Java 7引入了钻石操作符 `<>`,简化了匿名类型的实例化,...
为了解决这些问题,Java 7引入了新的`try-with-resources`语句。它允许我们在`try`关键字后的括号中声明并初始化需要关闭的资源,这些资源必须实现`AutoCloseable`接口或其子接口`Closeable`。当`try`块执行完毕或者...
1. **Try-with-resources语句**:Java 7引入了这一特性,使得资源管理更加简洁和安全。Try-with-resources确保在try语句块结束后,自动关闭打开的资源,减少了资源泄露的可能性。 2. **多异常处理**:在Java 7之前...