A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王大大呀 初级黑马   /  2019-10-10 13:07  /  876 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

复制文件的异常处理

1.基本做法

    public class CopyFileDemo {
        public static void main(String[] args) {
   
        }
   
        //try...catch...finally
        private static void method2() {
            FileReader fr = null;
            FileWriter fw = null;
            try {
                fr = new FileReader("fr.txt");
                fw = new FileWriter("fw.txt");
   
                char[] chs = new char[1024];
                int len;
                while ((len = fr.read()) != -1) {
                    fw.write(chs, 0, len);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if(fw!=null) {
                    try {
                        fw.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(fr!=null) {
                    try {
                        fr.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
   
        //抛出处理
        private static void method1() throws IOException {
            FileReader fr = new FileReader("fr.txt");
            FileWriter fw = new FileWriter("fw.txt");
   
            char[] chs = new char[1024];
            int len;
            while ((len = fr.read()) != -1) {
                fw.write(chs, 0, len);
            }
   
            fw.close();
            fr.close();
        }
    }

2.JDK7版本改进

    public class CopyFileDemo {
        public static void main(String[] args) {
   
        }
   
        //JDK7的改进方案
        private static void method3() {
            try(FileReader fr = new FileReader("fr.txt");
                FileWriter fw = new FileWriter("fw.txt");){
                char[] chs = new char[1024];
                int len;
                while ((len = fr.read()) != -1) {
                    fw.write(chs, 0, len);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

3.JDK9版本改进

    public class CopyFileDemo {
        public static void main(String[] args) {
   
        }
   
        //JDK9的改进方案
        private static void method4() throws IOException {
            FileReader fr = new FileReader("fr.txt");
            FileWriter fw = new FileWriter("fw.txt");
            try(fr;fw){
                char[] chs = new char[1024];
                int len;
                while ((len = fr.read()) != -1) {
                    fw.write(chs, 0, len);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马