java的IO异常处理

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------



java中的 常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。在API可以看到Exception中,有很多已知的子类,比较常见的有:ApplicationException, AWTException,DataFormatException, ClassNotFoundException,RuntimeException,SQLException, RuntimeException...... 等等,很多.

        其中RuntimeException是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
RuntimeException是可以有异常但是不需要抛出或者捕捉、包括它的任何子类都无需去捕捉。例如我们比较常见的IndexOutOfBoundsException, NullPointerException,....等等。 


 下面通过FileReader和FileWriter实现文件的复制功能,并实现处理运行中出现的异常。。


import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class JavaException {


 /**
  * Java的IO异常处理
  */
 public static void main(String[] args) {
  //为什么在try外面写,是因为在finally里面要使用,否则是访问不到的
  FileWriter fileWriter=null;
  FileReader fileReader=null;
  try {
   //创建一个写文件对象,如果文件不存在的话,他会自己创建一个文件,如果文件已经存在则会被覆盖
   fileWriter=new FileWriter("D:\\java.txt");
   //这里的目录路径出现两个反斜杠是因为在字符串中,的反斜杠需要转义的转义之后才是反斜杠
   fileReader=new FileReader("D:\\eclipse\\workspace\\Demo\\src\\test.java");
   
   //顶一个字符数组,因为FileReader是一个处理字符的流的对象
   char[] buffer=new char[1024];
   int len=0;
   //把数据读取到char数组中,因为filereader读取到结尾时,返回值为-1;所以用while循环作为条件
   while((len=fileReader.read(buffer))!=-1)
   {
    //把数据从字符数组的开始到结束位写入到D:\\java.txt的文件中
    fileWriter.write(buffer, 0, len);
   }
   
   
  } catch (IOException e) {
   //在控制台输出捕获到的异常
   System.out.println(e.toString());
  }
  finally
  {
   /**
    * 最后在finally里面关闭流,释放资源
    */
   
   /*
    * 这里为什么要判断他是否为空,因为如在try中发生异常,fileReader对象是null的,在这里如果不判断,
    *直接关闭流的话,可能出现空指针异常
    */
   if(fileReader!=null)
   {
    try {
     fileReader.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
   
   
   if(fileWriter!=null)
   {
    try {
     fileWriter.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }

 }

}



---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值