面试之——IO流标准处理异常代码的两种方式

JDK1.6版本处理方式如下
为什么fis fos初始值是null,为了防止空指针异常
这里用了try Finally和try Finally的嵌套
try Finally是什么意思呢,try是检测异常的,而一旦检测出异常就会抛出,程序就会终止,流就不会被关掉,而我们在关流之前加上Finally,作用就是这句话无论如何都会执行,流也就关掉了;but 需要关两个流,如果关第一个流时出现问题,例如数据库崩溃,程序也就终止了,第二个流就也不会被关掉了,这是我们再用一个try Finally,理由同上。

		FileInputStream fis=null;                    
		FileOutputStream fos=null;
		try {
		fis=new FileInputStream("xxx.txt");
		fos=new FileOutputStream("yyy.txt");
		
		int b;
		while((b=fis.read())!=-1) {
			fos.write(b);
		}
		}finally {
			try {
				if(fis!=null) {
					fis.close();
					}
			}finally {
			if(fos!=null) {
			fos.close();
			}
			}
		}

JDK1.7版本处理异常的方式更为简单

try(
				FileInputStream fis=new FileInputStream("xxx.txt");            //自动关流
				FileOutputStream fos=new FileOutputStream("yyy,txt");
		){
			int b;
			while((b=fis.read())!=-1) {
				fos.write(b);
			}
		}

这里是自动关流,因此不用.close()关流

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值