业务场景
常见于流操作,socket操作,不用写一大堆finally来关闭资源,所有实现Closeable的类声明都可以写在里面
1、流操作的一般写法:
public static void copyFileUsingFileStreams(File source, File dest) {
InputStream input = null;
OutputStream output = null;
try {
input = new FileInputStream(source);
output = new FileOutputStream(dest);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) != -1) {
output.write(buf, 0, bytesRead);
}
} catch (Exception e) {
System.out.println("复制文件异常" + e);
} finally {
try {
if (input != null) {
input.close();
}
if (output != null) {
output.close();
}
} catch (IOException e) {
System.out.println("关闭文件流异常" + e);
}
}
}
2、使用try(){}的写法
public static void copyFileUsingFileStreams(File source, File dest) {
try (
InputStream input = new FileInputStream(source);
OutputStream output = new FileOutputStream(dest);
) {
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) != -1) {
output.write(buf, 0, bytesRead);
}
} catch (Exception e) {
System.out.println("复制文件异常" + e);
}
}
备注:()中的代码一般放的是对资源的声明,try代码块执行完后,()中的资源就会自动关闭;如果{}中的代码出项了异常,()中的资源也会自动关闭