1 package day10.lesson1.p4;
2
3 import java.io.*;
4
5 /*
6 1.4 复制文件的异常处理
7 */
8 public class CopyFileDemo {
9 public static void main(String[] args) {
10
11 }
12
13
14 //抛出处理
15 private static void method1() throws IOException {
16 FileReader fr = new FileReader("fr.txt");
17 FileWriter fw = new FileWriter("fw.txt");
18
19 char[] chars = new char[1024];
20 int len;
21 while ((len=fr.read(chars)) != -1){
22 fw.write(chars, 0, len);
23 }
24
25 fw.close();
26 fr.close();
27 }
28
29
30 //try-catch-finally处理
31 private static void method2() {
32 FileReader fr = null;
33 FileWriter fw = null;
34 try {
35 fr = new FileReader("fr.txt");
36 fw = new FileWriter("fw.txt");
37
38 char[] chars = new char[1024];
39 int len;
40 while ((len=fr.read(chars)) != -1){
41 fw.write(chars, 0, len);
42 }
43 }catch (IOException e){
44 e.printStackTrace();
45 }finally {
46 if(fw != null){
47 try {
48 fw.close();
49 } catch (IOException e) {
50 e.printStackTrace();
51 }
52 }
53 if(fr != null){
54 try {
55 fr.close();
56 } catch (IOException e) {
57 e.printStackTrace();
58 }
59 }
60 }
61 //这是标准流程
62 }
63
64
65 //JDK7改进处理方案
66 private static void method3() {
67 try(FileReader fr = new FileReader("fr.txt");
68 FileWriter fw = new FileWriter("fw.txt")
69 ){
70 char[] chars = new char[1024];
71 int len;
72 while ((len=fr.read(chars)) != -1){
73 fw.write(chars, 0, len);
74 }
75 }catch (IOException e){
76 e.printStackTrace();
77 }
78 //JDK7:try(){}catch(){}会自动释放资源
79 //相比于JDK9处理方案,这种好一点,值得推荐
80 }
81
82
83 //JDK9改进处理方案
84 /*private static void method4() throws IOException{ //对于下两行需要抛出异常
85 FileReader fr = new FileReader("fr.txt");
86 FileWriter fw = new FileWriter("fw.txt");
87
88 try(fr;fw){
89 char[] chars = new char[1024];
90 int len;
91 while ((len=fr.read(chars)) != -1){
92 fw.write(chars, 0, len);
93 }
94 }catch (IOException e){
95 e.printStackTrace();
96 }
97 //JDK9:try(){}catch(){}会自动释放资源
98 //本地环境JKD8,编译时IDEA报错
99 }*/
100
101
102 }