黑马程序员技术交流社区

标题: 刚学到IO 有点小问题。。 [打印本页]

作者: zhu405557524    时间: 2015-4-12 22:52
标题: 刚学到IO 有点小问题。。
  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才对呀。。
作者: 谷歌    时间: 2015-4-12 23:05
finally中的代码是为了关闭流,只有当fr、fw不等于null时,你关闭他们才有意义。如果fr、fw等于null,你调用close方法会出问题。finally中try的这两个close方法是为了防止在关闭流时可能会出现的底层错误用的。
作者: 君嘘    时间: 2015-4-12 23:15
楼上正解。
fr=null的话,内存中就不存在流,关闭会出现空指针异常。

作者: lhtwm1    时间: 2015-4-13 23:45
只有不等于空的 时候内存中才有流的存在  所以才会关流




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2