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()关流