package com.chunzhi.Test06TryCatch;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
JDK 7的新特性
在try的后边可以增加一个(),在括号中可以定义流对象
那么这个流对象的作用域就在try中有效
try中的代码执行完毕,会自动把流对象释放,不用写finally
格式:
try (定义流对象;定义流对象....) { // 括号中():可以定义多个流对象
可能会产生异常的代码
} catch (异常类变量 变量名) {
异常的处理逻辑
}
*/
public class Test02JKD7 {
public static void main(String[] args) {
try ( // 1.创建一个字节输入流对象,构造方法中绑定读取的数据源
FileInputStream fis = new FileInputStream("C:\\IDEA快捷键.png");
// 2.创建一个字节输出流对象,构造方法中绑定要写入的目的地
FileOutputStream fos = new FileOutputStream("D:\\IDEA快捷键.png");
) {
// 可能会产生异常的代码
// 使用数组缓冲读取多个字节,写入多个字节
byte[] bytes = new byte[1024]; // 每次读取1024字节
// 3.使用字节输入流对象中的方法read读取文件
int len = 0; // 每次读取的有效字节个数
while ((len = fis.read(bytes)) != -1) {
// 4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中
fos.write(bytes, 0, len);
}
} catch (IOException e) {
// 异常的处理逻辑
System.out.println(e);
}
}
}