1.JDK7之前流的处理
之前对于流的使用中,会涉及到异常抛出,这个是不允许的,因为一旦报错,程序就直接终止 所有我们需要在内部将流的异常信息进行处理 那么在JDK之前我们的处理方法是这样的:try...catch...finally
public class Tests {
public static String path = "day13_Properies类&缓冲流&转换流&序列化流&装饰者模式&commons-io工具包\\resources\\b.txt";
public static String path1 = "day13_Properies类&缓冲流&转换流&序列化流&装饰者模式&commons-io工具包\\resources\\b_copy.txt";
public static void main(String[] args) {
//一次读写一个字节数组:拷贝文件
FileInputStream fis =null;
FileOutputStream fos = null;
try {
// 1.创建字节输入流对象,主要是读取数据,关联a.txt
fis = new FileInputStream(path);
// 2.创建字节输出流对象,主要是写入数据,关联a_copy.txt
fos = new FileOutputStream(path1);
// 3.创建一个字节数组,用来存储读取到的字节数据
byte[] bytes = new byte[1024];
// 4.定义一个int类型的变量,用来存储读取到的字节个数
int len;
// 5.循环读取数据
while ((len = fis.read(bytes)) != -1){
fos.write(bytes,0,len);
}
} catch (IOException e) {
System.out.println("流出现异常");
} finally {
// 6.关闭流,释放资源
// 一般正常情况下都会执行,发生异常就会执行这里,所以关闭流释放资源就在此执行最安全
try {
if (fos != null){
fos.close();
}
} catch (IOException e) {
System.out.println("字节输出流未正常关闭");
} finally {
try {
if (fis != null){
fis.close();
}
} catch (IOException e) {
System.out.println("字节输入流未正常关闭");
}
}
}
}
}
2.JDK7流的处理
JDK7的处理:try...with...resource 语句 特点:该语句确保了每个资源在语句结束的时候关闭 格式: ????? try(创建流对象语句,如果有多个的话,就是用英文分号;分隔){ ????????? // 读写操作 ????? } catch(IOException e){ ????????? e.printStackTrace(); ????? }
public class Tests {
public static void main(String[] args) {
try(
FileInputStream fis = new FileInputStream(path);
FileOutputStream fos = new FileOutputStream(path1);){
byte[] bytes = new byte[1024];
int len;
while ((len = fis.read(bytes)) != -1){
fos.write(bytes);
}
}catch (IOException e){
System.out.println("流出现了异常");
}
}
public static String path = "day13_Properies类&缓冲流&转换流&序列化流&装饰者模式&commons-io工具包\\resources\\a.txt";
public static String path1 = "day13_Properies类&缓冲流&转换流&序列化流&装饰者模式&commons-io工具包\\resources\\a_copy.txt";
}
|