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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© java—family 中级黑马   /  2014-7-28 00:02  /  1625 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itcast.p1.io.charstream.test;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyTextTest_2 {
private static final int BUFFER_SIZE = 1024;
201
/**
* @param args
*/
public static void main(String[] args) {
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("IO流_2.txt");
fw = new FileWriter("copytest_2.txt");
//创建一个临时容器,用于缓存读取到的字符。
char[] buf = new char[BUFFER_SIZE];//这就是缓冲区。
//定义一个变量记录读取到的字符数,(其实就是往数组里装的字符个数 )
int len = 0;
while((len=fr.read(buf))!=-1){
fw.write(buf, 0, len);
}
} catch (Exception e) {
//
System.out.println("读写失败");
throw new RuntimeException("读写失败");
}finally{
if(fw!=null)
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
if(fr!=null)
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

7 个回复

倒序浏览
因为如果值null就说明,流并没有读取到文件,也就是说并没有占用系统的资源,所以就不用关闭了!
值!null的话,就说明是占用了系统资源,所以要及时关闭!
这个视频里有讲到哦!!!
回复 使用道具 举报
如果你的fr     fw   为空   fr = new FileReader("IO流_2.txt");
fw = new FileWriter("copytest_2.txt");
回复 使用道具 举报
如果你的fr     fw   为空  
fr = new FileReader("IO流_2.txt");
fw = new FileWriter("copytest_2.txt");
这两名代码就没有执行,也就是说你的两个流对像没有创建成功
没有流对像你怎么调用close方法,也就是説没有创建成功流对像  所以你不能关闭
回复 使用道具 举报
==测一下什么时候为null吧!

  1. public static void main(String[] args) {
  2.                 FileReader fr = null;
  3.                 try {
  4.                         //这里换成你的文件的路径
  5.                         fr = new FileReader("");
  6.                 } catch (FileNotFoundException e) {
  7.                         e.printStackTrace();
  8.                 }finally{
  9.                         if(null == fr){
  10.                                 System.out.println("第一次关");
  11.                                 System.out.print("fr--->");
  12.                                 System.out.println(fr);
  13.                         }
  14.                 }
  15.         }
  16. //运行结果
  17. /*结果:
  18.         java.io.FileNotFoundException:
  19.         at java.io.FileInputStream.open(Native Method)
  20.         at java.io.FileInputStream.<init>(FileInputStream.java:120)
  21.         at java.io.FileInputStream.<init>(FileInputStream.java:79)
  22.         at java.io.FileReader.<init>(FileReader.java:41)
  23.         at com.days.Test.main(Test.java:14)
  24. 第一次关
  25. fr--->null
  26. */
复制代码

此时的fr==null,当文件存在时fr!= null了。这个你自己可以打印下fr的值。呵呵

点评

只能说呵呵了  发表于 2014-7-28 08:55
回复 使用道具 举报
柳超 发表于 2014-7-28 08:35
如果你的fr     fw   为空  
fr = new FileReader("IO流_2.txt");
fw = new FileWriter("copytest_2.txt" ...

你这样理解好理解些,因为他关联了文件,就使用了资源,里面不是空的,所以在运行完后,关闭他。
回复 使用道具 举报
柳超 中级黑马 2014-7-28 09:19:56
7#
java—family 发表于 2014-7-28 09:17
你这样理解好理解些,因为他关联了文件,就使用了资源,里面不是空的,所以在运行完后,关闭他。 ...

是的,不是空表示流对象创建成功所以用完了需要关闭!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马