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 }
File类与常用IO流第六章——使用try...catch...finally处理流中的异常的更多相关文章
- File类与常用IO流第四章——IO字节流
一切文件在存储时,都是以二进制数字的形式保存的,都是一个一个字节.无论使用什么样的流对象,底层传输的始终是二进制数据. 字节输出流 OutputStream java.io.OutputStream ...
- File类与常用IO流第一章File类
第一章:File类 一.1个重点单词: file:文件:directory:文件夹/目录:path:路径(绝对路径:absolutePath) 二.4个静态成员变量: 1.static String ...
- File类与常用IO流第九章——转换流
第九章.转换流 字节编码和字符集 编码:按照某种规则将字符以二进制存储到计算机中. 解码:将存储在计算机中的二进制数按照某种规则解析显示出来. 字符编码:Character Encoding ,就是一 ...
- File类与常用IO流第八章——缓冲流
第八章.缓冲流 缓冲流概述 缓冲流,也叫高效流,是对4个基本的FileXxx流的增强.按照数据类型分为4类: 输入缓冲流 输出缓冲流 字节缓冲流 BufferedInputStream Buffe ...
- File类与常用IO流第七章——Properties集合
Properties概述 java.util.Properties extends Hashtable<k,v> implements Map<k,v> Properties类 ...
- File类与常用IO流第五章——IO字符流
字符流,只能操作文本文件,不能操作图片.视频等非文本文件 字符输入流 java.io.Reader 字符输入流中一些共性的成员方法 int read():读取单个字符并返回. int read(cha ...
- File类与常用IO流第二章过滤器
在第一章中,有一个练习使用递归搜索文件 1 public static void main(String[] args) { 2 File f=new File("E:\\aaa" ...
- File类与常用IO流第十一章——打印流
第十一章.打印流 概述:java.io.PrintStream extends OutputStream,为其他输出流添加了功能,使题目能够方便的打印各种数据值表示形式. 特点: 只负责数据的输出,不 ...
- File类与常用IO流第十章——序列化流
第十章.序列化流 序列化流和反序列化流概述 序列化:用一个字节序列表示一个对象,该字节序列包含该对象的数据.对象的类型和对象中存储的属性等等信息.字节序列写出到文件后,相当于文件中持久保存了一个对象的 ...
随机推荐
- FPGA多功能应用处理器
FPGA多功能应用处理器 编解码加速卡 概述: 对于H.265/HEVC/VP9编解码处理,FPGA编解码加速卡方案有着完善的功能和preset配置,支持最多的有利于提高画质和降低bitrate的功能 ...
- MegEngine基本概念
MegEngine基本概念 基本概念 MegEngine 是基于计算图的深度神经网络学习框架. 本文内容会简要介绍计算图及其相关基本概念,以及在 MegEngine 中的实现. 计算图 结合一个简单的 ...
- 【八】Kubernetes 五种资源控制器详细介绍以及功能演示
一.控制器说明 Pod 的分类: 自主式 Pod:该类型的 Pod 无论是异常退出还是正常退出都不会被创建,也就是说没有对应的管理者. 控制器管理的 Pod:该类型 Pod 在控制器的生命周期里,控制 ...
- jmeter的参数化实现
背景: 在实际的测试工作中,我们经常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件的功能.这种测试方式在业界称为数据驱动测试,而在实际测试工作中,测试工具中实现不同数据输入的过程称 ...
- P1828 [USACO3.2]香甜的黄油 Sweet Butter
题目描述 农夫$John$发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道$N(1\leqslant N\leqslant 500)$只奶牛会过来舔它,这样就能做出能卖好价钱的超甜 ...
- python取整函数 向上取整 向下取整 四舍五入
向上取整 >>> import math >>> math.ceil(3.5) 4 >>> math.ceil(3.4) 4 >>&g ...
- [源码解析] 深度学习分布式训练框架 horovod (4) --- 网络基础 & Driver
[源码解析] 深度学习分布式训练框架 horovod (4) --- 网络基础 & Driver 目录 [源码解析] 深度学习分布式训练框架 horovod (4) --- 网络基础 & ...
- 聚类算法K-Means算法和Mean Shift算法介绍及实现
Question:什么是聚类算法 1.聚类算法是一种非监督学习算法 2.聚类是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法 3.理论上,相同的组的数据之间有相同的属性或者是特征,不 ...
- Spring Boot WebFlux-导读
背景 大家都知道,Spring Framework 是 Java/Spring 应用程序跨平台开发框架,也是 Java EE(Java Enterprise Edition) 轻量级框架,其 Spri ...
- docker 自定义部署Springboot——依赖与代码分离部署
第一步:执行mvn package 命令打出jar包,然后解压jar包,把lib放到服务器合适的目录下面 第二步:打出不带jar包的SpringBoot工程 首先配置pom.xml文件 <bui ...