转载

IO字符流9jdk7和jdk9中流的异常的处理

package com.itheima.demo06.trycatch;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

/*

JDK7的新特性
在try的后边可以增加一个(),在括号中可以定义流对象
那么这个流对象的作用域就在try中有效
try中的代码执行完毕,会自动把流对象释放,不用写finally
格式:
    try(定义流对象;定义流对象....){
        可能会产出异常的代码
    }catch(异常类变量 变量名){
        异常的处理逻辑
    }

*/

public class Demo02JDK7 {

public static void main(String[] args) {
    try(//1.创建一个字节输入流对象,构造方法中绑定要读取的数据源
        FileInputStream fis = new FileInputStream("c://1.jpg");
        //2.创建一个字节输出流对象,构造方法中绑定要写入的目的地
        FileOutputStream fos = new FileOutputStream("d://1.jpg");){

        //可能会产出异常的代码
        //一次读取一个字节写入一个字节的方式
        //3.使用字节输入流对象中的方法read读取文件
        int len = 0;
        while((len = fis.read())!=-1){
            //4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中
            fos.write(len);
        }

    }catch (IOException e){
        //异常的处理逻辑
        System.out.println(e);
    }


}

}

package com.itheima.demo06.trycatch;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

/*

JDK9新特性
try的前边可以定义流对象
在try后边的()中可以直接引入流对象的名称(变量名)
在try代码执行完毕之后,流对象也可以释放掉,不用写finally
格式:
    A a = new A();
    B b = new B();
    try(a,b){
        可能会产出异常的代码
    }catch(异常类变量 变量名){
        异常的处理逻辑
    }

*/

public class Demo03JDK9 {

public static void main(String[] args) throws IOException {
    //1.创建一个字节输入流对象,构造方法中绑定要读取的数据源
    FileInputStream fis = new FileInputStream("c://1.jpg");
    //2.创建一个字节输出流对象,构造方法中绑定要写入的目的地
    FileOutputStream fos = new FileOutputStream("d://1.jpg");

    try(fis;fos){
        //一次读取一个字节写入一个字节的方式
        //3.使用字节输入流对象中的方法read读取文件
        int len = 0;
        while((len = fis.read())!=-1){
            //4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中
            fos.write(len);
        }
    }catch (IOException e){
        System.out.println(e);
    }

    //fos.write(1);//Stream Closed

}

}

原文  https://segmentfault.com/a/1190000020099698
正文到此结束
Loading...