io流-异常处理
在JDK1.7之前使用try catch finally处理流中的异常
格式:
try{
可能会产生异常的代码
}catch(异常类变量 变量名){
异常的处理逻辑
}finally{
一定会指定的代码
资源释放
}
代码:
public static void main(String[] args) {
FileWriter fw=null;
try {
fw = new FileWriter("D:\\file\\a.txt");
fw.write("abc");
fw.write("\n");
fw.write("def");
}catch (IOException e){
e.getStackTrace();
}finally {
if (fw!=null){
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
JDK7的新特性
在try的后边可以增加一个()在括号中可以定义流对象
那么这个流对象的作用域就在try中有效
try中的代码执行完毕 会自动把流对象释放 不用写finally
格式
try(流对象;流对象..){可以定义多个流对象
可能会产生异常的代码
}catch(异常类变量 变量名){
异常的处理逻辑
}
代码:
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("E:\\eula.1028.txt");
FileOutputStream fos = new FileOutputStream("D:\\file\\eula.1027.txt");){
int len=0;
byte[] bytes=new byte[1024];
while ((len=fis.read(bytes))!=-1){
fos.write(bytes,0,len);
}
//关闭流释放资源
fis.close();
fos.close();
}catch (IOException e){
System.out.println(e);
}
}

浙公网安备 33010602011771号