JavaSE-19.1.4【复制文件的异常处理】

复制代码
  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 }
复制代码

 

posted @   yub4by  阅读(61)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示