/**
* 学会使用finally释放资源
*/
public class TryCatchResourceDemo {
public static void main(String[] args) {
try (
// 这里面只能放置资源对象,用完会自动关闭,自动调用资源对象的close方法关闭资源(即使出现异常也会做关闭操作)
// 1. 创建一个字节输入流管道与原文件接通
InputStream inputStream = new FileInputStream("D:\\ideaProject\\reflectDemo\\src\\data03.txt");
// 2. 创建一个字节输出流管道与目标文件接通
OutputStream outputStream = new FileOutputStream("D:\\ideaProject\\reflectDemo\\src\\new.txt");
// int age = 23; // 这里只能放资源
MyConnection myConnection = new MyConnection();
){
// 3. 定义一个字节数组转移数据
byte[] buffer = new byte[1024];
int len; // 记录每次读取的字节数
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
System.out.println("复制完成了!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
class MyConnection implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println("连接资源被成功释放了!");
}
}
复制完成了!
连接资源被成功释放了!
在try()括号中放置资源对象(用完会自动关闭),该对象必须继承 AutoCloseable接口才可以,否则会报错。