黑马程序员技术交流社区
标题:
刚学到IO 有点小问题。。
[打印本页]
作者:
zhu405557524
时间:
2015-4-12 22:52
标题:
刚学到IO 有点小问题。。
import java.io.*;
class CopyText
{
public static void main(String[] args)
{
copy_2();
}
public static void copy_2(){
FileReader fr = null;
FileWriter fw = null;
try
{
fr = new FileReader("11.txt");
fw = new FileWriter("22.txt");
char[] arr = new char[1024];
int len = 0;
while((len = fr.read(arr))!=-1){
fw.write(arr,0,len);
}
}
catch (IOException e)
{
throw new RuntimeException("读写异常");
}
finally{
if(fr!=null){
try
{
fr.close();
}
catch (IOException e)
{
System.out.println(e.toString());
}
}
if(fw!=null){
try
{
fw.close();
}
catch (IOException e)
{
System.out.println(e.toString());
}
}
}
}
/*
public static void copy_1()throws IOException{
FileReader fr = new FileReader("11.txt");
FileWriter fw = new FileWriter("22.txt");
int ch = 0;
while((ch = fr.read())!=-1){
fw.write(ch);
}
fr.close();
fw.close();
*/
}
}
复制代码
在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