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
}
}