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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhu405557524 中级黑马   /  2015-4-12 22:52  /  565 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.*;
  2. class CopyText
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 copy_2();
  7.         }

  8.         public static void copy_2(){
  9.                 FileReader fr = null;
  10.                 FileWriter fw = null;
  11.                
  12.                 try
  13.                 {
  14.                         fr = new FileReader("11.txt");
  15.                         fw = new FileWriter("22.txt");
  16.                         char[] arr = new char[1024];
  17.                         int len = 0;
  18.                         while((len = fr.read(arr))!=-1){
  19.                                 fw.write(arr,0,len);
  20.                         }

  21.                 }
  22.                 catch (IOException e)
  23.                 {
  24.                         throw new RuntimeException("读写异常");
  25.                 }

  26.                 finally{
  27.                         if(fr!=null){
  28.                                 try
  29.                                 {
  30.                                         fr.close();
  31.                                 }
  32.                                 catch (IOException e)
  33.                                 {
  34.                                         System.out.println(e.toString());
  35.                                 }
  36.                         }
  37.                         if(fw!=null){
  38.                                 try
  39.                                 {
  40.                                         fw.close();
  41.                                 }
  42.                                 catch (IOException e)
  43.                                 {
  44.                                         System.out.println(e.toString());
  45.                                 }
  46.                         }
  47.                 }
  48.         }
  49.         /*
  50.         public static void copy_1()throws IOException{
  51.                 FileReader fr = new FileReader("11.txt");
  52.                 FileWriter fw = new FileWriter("22.txt");
  53.                 int ch = 0;
  54.                 while((ch = fr.read())!=-1){
  55.                         fw.write(ch);
  56.                 }
  57.                 fr.close();
  58.                 fw.close();
  59.                 */
  60.         }

  61. }
复制代码


在copy_2 方法中。。为什么在if判断是 不等于null。。应该是等于null才对呀。。

3 个回复

倒序浏览
finally中的代码是为了关闭流,只有当fr、fw不等于null时,你关闭他们才有意义。如果fr、fw等于null,你调用close方法会出问题。finally中try的这两个close方法是为了防止在关闭流时可能会出现的底层错误用的。
回复 使用道具 举报
楼上正解。
fr=null的话,内存中就不存在流,关闭会出现空指针异常。
回复 使用道具 举报
只有不等于空的 时候内存中才有流的存在  所以才会关流
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马