在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. 大尺寸卫星图像目标检测:yoloT

    大尺寸卫星图像目标检测:yoloT 1. 前言 YOLT论文全称「You Only Look Twice: Rapid Multi-Scale Object Detection In Satellit ...

  2. ADAS车辆在行人安全方面得分很低

    ADAS车辆在行人安全方面得分很低 ADAS vehicles score poorly on pedestrian safety 对于热衷于自动驾驶汽车(AV)的狂热者来说,一个现在病毒性的视频片段 ...

  3. 【Azure 应用服务】Azure Web App的服务(基于Windows 操作系统部署)在被安全漏洞扫描时发现了TCP timestamps漏洞

    问题背景 什么是TCP timestamps(TCP 时间戳)? The remote host implements TCP Timestamps, as defined by RFC1323 (h ...

  4. 『居善地』接口测试 — 12、Moco框架介绍

    目录 1.Mock功能介绍 2.Moco框架介绍 3.Moco框架在接口测试中的作用 4.Moco框架的优点 5.Moco框架的下载与启动 (1)Moco框架的下载 (2)Moco框架的启动 1.Mo ...

  5. Open C

    Open C UF  公共类型UF_ABORT   进度中断UF_ASSEMUF_ATTRUF_BOUNDUF_BREPUF_CAMUF_CFIUF_CGMUF_CLEARUF_CLONE      ...

  6. 如何基于 String 实现同步锁?

    如何基于String实现同步锁? 在某些时候,我们可能想基于字符串做一些事情,比如:针对同一用户的并发同步操作,使用锁字符串的方式实现比较合理. 因为只有在相同字符串的情况下,并发操作才是不被允许的. ...

  7. 关于Maven repository中pom.xml的jar包依赖

    https://mvnrepository.com 该mvn网站可以找到个个版本的依赖jar包  http://doc.canglaoshi.org 该网站为达内的开发文档服务器,可以找到很多开发中需 ...

  8. Spring Boot 2.x基础教程:如何扩展XML格式的请求和响应

    在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...

  9. Netty 框架学习 —— 单元测试

    EmbeddedChannel 概述 ChannelHandler 是 Netty 程序的关键元素,所以彻底地测试它们应该是你的开发过程中的一个标准部分,EmbeddedChannel 是 Netty ...

  10. hive学习笔记之四:分区表

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...