Java 7中的try-with-resources语句是对try-catch-finally语句的改进。
- 可以在try子句中声明资源(可以是多个,分号分隔)
- 在try子句中声明的资源,可以在try子句结束时自动被close。
- 任何实现java.lang.AutoCloseable接口的对象都可以作为try子句中的资源
- 任何实现java.io.Closeable接口(扩展自java.lang.AutoCloseable接口)的对象都可以作为try子句中的资源
示例如下:
public static void writeToFileZipFileContents(String zipFileName,
String outputFileName)
throws java.io.IOException {
java.nio.charset.Charset charset = java.nio.charset.StandardCharsets.US_ASCII;
java.nio.file.Path outputFilePath = java.nio.file.Paths.get(outputFileName);
// Open zip file and create output file with
// try-with-resources statement
try (
java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName);
java.io.BufferedWriter writer = java.nio.file.Files.newBufferedWriter(outputFilePath, charset)
) {
// Enumerate each entry
for (java.util.Enumeration entries = zf.entries(); entries.hasMoreElements();) {
// Get the entry name and write it to the output file
String newLine = System.getProperty("line.separator");
String zipEntryName =
((java.util.zip.ZipEntry)entries.nextElement()).getName() +
newLine;
writer.write(zipEntryName, 0, zipEntryName.length());
}
}
}
参考文献:
https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html