File类与常用IO流第六章——使用try...catch...finally处理流中的异常
时间:2021-07-16
本文章向大家介绍File类与常用IO流第六章——使用try...catch...finally处理流中的异常,主要包括File类与常用IO流第六章——使用try...catch...finally处理流中的异常使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在JDK1.7之前:
1 package com.itheima.demo06.trycatch; 2 3 import java.io.FileWriter; 4 import java.io.IOException; 5 6 /* 7 在jdk1.7之前使用try catch finally 处理流中的异常 8 格式: 9 try{ 10 可能会产出异常的代码 11 }catch(异常类变量 变量名){ 12 异常的处理逻辑 13 }finally{ 14 一定会指定的代码 15 资源释放 16 } 17 */ 18 public class Demo01TryCatch { 19 public static void main(String[] args) { 20 //提高变量fw的作用域,让finally可以使用 21 //变量在定义的时候,可以没有值,但是使用的时候必须有值 22 //fw = new FileWriter("09_IOAndProperties\\g.txt",true); 执行失败,fw没有值,fw.close会报错 23 FileWriter fw = null; 24 try{ 25 //可能会产出异常的代码 26 fw = new FileWriter("w:\\09_IOAndProperties\\g.txt",true); 27 for (int i = 0; i <10 ; i++) { 28 fw.write("HelloWorld"+i+"\r\n"); 29 } 30 }catch(IOException e){ 31 //异常的处理逻辑 32 System.out.println(e); 33 }finally { 34 //一定会指定的代码 35 //创建对象失败了,fw的默认值就是null,null是不能调用方法的,会抛出NullPointerException,需要增加一个判断,不是null在把资源释放 36 if(fw!=null){ 37 try { 38 //fw.close方法声明抛出了IOException异常对象,所以我们就的处理这个异常对象,要么throws,要么try catch 39 fw.close(); 40 } catch (IOException e) { 41 e.printStackTrace(); 42 } 43 } 44 45 } 46 } 47 }
JDK1.7:
1 import java.io.FileInputStream; 2 import java.io.FileOutputStream; 3 import java.io.IOException; 4 5 /* 6 JDK7的新特性 7 在try的后边可以增加一个(),在括号中可以定义流对象 8 那么这个流对象的作用域就在try中有效 9 try中的代码执行完毕,会自动把流对象释放,不用写finally 10 格式: 11 try(定义流对象;定义流对象....){ 12 可能会产出异常的代码 13 }catch(异常类变量 变量名){ 14 异常的处理逻辑 15 } 16 */ 17 public class Demo02JDK7 { 18 public static void main(String[] args) { 19 try(//1.创建一个字节输入流对象,构造方法中绑定要读取的数据源 20 FileInputStream fis = new FileInputStream("c:\\1.jpg"); 21 //2.创建一个字节输出流对象,构造方法中绑定要写入的目的地 22 FileOutputStream fos = new FileOutputStream("d:\\1.jpg");){ 23 24 //可能会产出异常的代码 25 //一次读取一个字节写入一个字节的方式 26 //3.使用字节输入流对象中的方法read读取文件 27 int len = 0; 28 while((len = fis.read())!=-1){ 29 //4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中 30 fos.write(len); 31 } 32 33 }catch (IOException e){ 34 //异常的处理逻辑 35 System.out.println(e); 36 } 37 38 39 } 40 }
JDK1.9:
1 import java.io.FileInputStream; 2 import java.io.FileOutputStream; 3 import java.io.IOException; 4 5 /* 6 JDK9新特性 7 try的前边可以定义流对象 8 在try后边的()中可以直接引入流对象的名称(变量名) 9 在try代码执行完毕之后,流对象也可以释放掉,不用写finally 10 格式: 11 A a = new A(); 12 B b = new B(); 13 try(a,b){ 14 可能会产出异常的代码 15 }catch(异常类变量 变量名){ 16 异常的处理逻辑 17 } 18 */ 19 public class Demo03JDK9 { 20 public static void main(String[] args) throws IOException { 21 //1.创建一个字节输入流对象,构造方法中绑定要读取的数据源 22 FileInputStream fis = new FileInputStream("c:\\1.jpg"); 23 //2.创建一个字节输出流对象,构造方法中绑定要写入的目的地 24 FileOutputStream fos = new FileOutputStream("d:\\1.jpg"); 25 26 try(fis;fos){ 27 //一次读取一个字节写入一个字节的方式 28 //3.使用字节输入流对象中的方法read读取文件 29 int len = 0; 30 while((len = fis.read())!=-1){ 31 //4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中 32 fos.write(len); 33 } 34 }catch (IOException e){ 35 System.out.println(e); 36 } 37 38 //fos.write(1);//Stream Closed 39 40 } 41 }
本文来自博客园,作者:水啾2,转载请注明原文链接:https://www.cnblogs.com/shuijiu/p/15020909.html
原文地址:https://www.cnblogs.com/shuijiu/p/15020909.html
- 1653: [Usaco2006 Feb]Backward Digit Sums
- 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场
- 1682: [Usaco2005 Mar]Out of Hay 干草危机
- 1637: [Usaco2007 Mar]Balanced Lineup
- AutoFac在项目中的应用
- 每天学一点Docker(5)——了解Docker架构
- 跨站请求伪造(CSRF/XSRF)
- 我这么玩Web Api(一)
- 1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路
- 点双连通分量与割点
- 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐
- 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏
- 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富
- 2463: [中山市选2009]谁能赢呢?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 9.29【前端开发】超链接伪类:如何在svg元素上使用超链接伪类?
- Angular input控件的click事件表达式如何被转换成JavaScript函数
- Angular input控件的click事件响应处理的调用上下文
- SAP Spartacus cms.service.ts getComponentData
- toString如何转json
- DàYé玩转数据战略Step By Step
- 突发!Windows XP 源代码泄露
- SAP Spartacus打印Occ endpoint请求的url
- 线上发生死锁异常了,该怎么办
- jQuery 元素操作
- jQuery 文本属性值
- jQuery 属性操作
- 方老师聊Nginx知识点
- 《Java从入门到失业》第五章:继承与多态(5.1-5.7):继承
- 【赵渝强老师】Flink的DataSet算子