try-with-resources 自动关闭资源

转至:https://blog.csdn.net/wtopps/article/details/71108342
Java 7增强了try语句的功能——它允许在try关键字后跟一对圆括号,圆括号可以声明,初始化一个或多个资源,此处的资源指得是那些必须在程序结束时必须关闭的资源(比如数据库连接,网络连接等),try语句在该语句结束时自动关闭这些资源。
  为了保证try语句可以正常关闭资源,这些资源实现类必须实现Closeable或AutoCloseable接口,实现这些类就必须实现close方法。

	FileInputStream in = null;
	FileOutputStream os = null;
	try {
		img2.createNewFile();
		in = new FileInputStream(img);
		os = new FileOutputStream(img2);
		byte[] buf = new byte[(int)img.length()];
		in.read(buf);
		os.write(buf);
	} catch (IOException e) {
		e.printStackTrace();
	} finally{
		try {
			//先开后关
			os.close();
			in.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

使用try-with-resource 结构

		try (
			FileInputStream in = new FileInputStream(img);
			FileOutputStream os = new FileOutputStream(img2);
		){
			img2.createNewFile();
			byte[] buf = new byte[(int)img.length()];
			in.read(buf);
			os.write(buf);
		} catch (IOException e) {
			e.printStackTrace();
		}

自定义 实现AutoCloseable接口:

public class Test01 implements AutoCloseable{
	public void print(){
		System.out.println("运行Test01");
	}
	@Override
	public void close() throws Exception {
		System.out.println("关闭资源");
	}
	
	public static void main(String[] args){
		
		try(Test01 test = new Test01();
			){
			test.print();
		} catch (Exception e){
			e.printStackTrace();
		}
	}
}
结果是:
运行Test01
关闭资源
只要是实现了AutoCloseable接口的类 都可以在try-catch语句实现自动关闭资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值