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

3次阅读

共计 1434 个字符,预计需要花费 4 分钟才能阅读完成。

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

}

}

正文完
 0