在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处理流中的异常的更多相关文章

  1. File类与常用IO流第四章——IO字节流

    一切文件在存储时,都是以二进制数字的形式保存的,都是一个一个字节.无论使用什么样的流对象,底层传输的始终是二进制数据. 字节输出流 OutputStream java.io.OutputStream ...

  2. File类与常用IO流第一章File类

    第一章:File类 一.1个重点单词: file:文件:directory:文件夹/目录:path:路径(绝对路径:absolutePath) 二.4个静态成员变量: 1.static String ...

  3. File类与常用IO流第九章——转换流

    第九章.转换流 字节编码和字符集 编码:按照某种规则将字符以二进制存储到计算机中. 解码:将存储在计算机中的二进制数按照某种规则解析显示出来. 字符编码:Character Encoding ,就是一 ...

  4. File类与常用IO流第八章——缓冲流

    第八章.缓冲流 缓冲流概述 缓冲流,也叫高效流,是对4个基本的FileXxx流的增强.按照数据类型分为4类:   输入缓冲流 输出缓冲流 字节缓冲流 BufferedInputStream Buffe ...

  5. File类与常用IO流第七章——Properties集合

    Properties概述 java.util.Properties extends Hashtable<k,v> implements Map<k,v> Properties类 ...

  6. File类与常用IO流第五章——IO字符流

    字符流,只能操作文本文件,不能操作图片.视频等非文本文件 字符输入流 java.io.Reader 字符输入流中一些共性的成员方法 int read():读取单个字符并返回. int read(cha ...

  7. File类与常用IO流第二章过滤器

    在第一章中,有一个练习使用递归搜索文件 1 public static void main(String[] args) { 2 File f=new File("E:\\aaa" ...

  8. File类与常用IO流第十一章——打印流

    第十一章.打印流 概述:java.io.PrintStream extends OutputStream,为其他输出流添加了功能,使题目能够方便的打印各种数据值表示形式. 特点: 只负责数据的输出,不 ...

  9. File类与常用IO流第十章——序列化流

    第十章.序列化流 序列化流和反序列化流概述 序列化:用一个字节序列表示一个对象,该字节序列包含该对象的数据.对象的类型和对象中存储的属性等等信息.字节序列写出到文件后,相当于文件中持久保存了一个对象的 ...

随机推荐

  1. 物联网安全Wi-Fi漫游

    物联网安全Wi-Fi漫游 根据Statistica的最新报告,到2021年,全球正在使用的Wi-Fi连接设备的数量预计将增长到222亿.这种Wi-Fi的广泛使用不仅包括消费者的Wi-Fi使用,而且还包 ...

  2. 摄像头ISP系统原理(上)

    摄像头ISP系统原理(上) ISP(Image Signal Processor),即图像信号处理器,用于处理图像信号传感器输出的图像信号.它在相机系统中占有核心主导的地位,是构成相机的重要设备. 主 ...

  3. MindSpore图像分类模型支持(Lite)

    MindSpore图像分类模型支持(Lite) 图像分类介绍 图像分类模型可以预测图片中出现哪些物体,识别出图片中出现物体列表及其概率. 比如下图经过模型推理的分类结果为下表: 类别 概率 plant ...

  4. AI解决方案:边缘计算和GPU加速平台

    AI解决方案:边缘计算和GPU加速平台 一.适用于边缘 AI 的解决方案 AI 在边缘蓬勃发展.AI 和云原生应用程序.物联网及其数十亿的传感器以及 5G 网络现已使得在边缘大规模部署 AI 成为可能 ...

  5. CUDA 9中张量核(Tensor Cores)编程

    CUDA 9中张量核(Tensor Cores)编程 Programming Tensor Cores in CUDA 9 一.概述 新的Volta GPU架构的一个重要特点是它的Tensor核,使T ...

  6. MLPerf结果证实至强® 可有效助力深度学习训练

    MLPerf结果证实至强 可有效助力深度学习训练 核心与视觉计算事业部副总裁Wei Li通过博客回顾了英特尔这几年为提升深度学习性能所做的努力. 目前根据英特尔 至强 可扩展处理器的MLPerf结果显 ...

  7. 四、配置及使用Zabbix监控系统

    要求: 沿用练习- - -,使用Zabbix监控平台监控Linux服务器,实现以下目标:1.监控CPU2.监控内存3.监控进程4.监控网络流量5.监控硬盘 方案:通过Zabbix监控平台,添加被监控z ...

  8. 使用firefox打开网页报错——Error: no display specified

    想在linux环境下打开一个网页,环境描述:在窗口模式下,打Terminal,然后从本地服务器ssh到了另一个服务器,想执行firefox命令打开一个网页,如下 [root@pc207 ~]# fir ...

  9. 【NX二次开发】根据部件名返回部件tag,UF_PART_ask_part_tag

    注意UF_PART_ask_part_tag的参数输入带扩展名的部件名或者不带扩展名的部件名,不允许输入全路径名,否则会出错,例如下面这例子.部件在C盘"C:\\temp\\B01.prt ...

  10. Binding(一):数据绑定

    这节开始分几期来讲一下WPF中Binding的相关用法,本节主要讲使用Binding进行数据绑定. Binding的作用 在WinForm中,我们要想对控件赋值,需要在后台代码中拿到控件对象进行操作, ...