黑马程序员技术交流社区
标题:
IO流问题
[打印本页]
作者:
陌路行者
时间:
2013-7-8 12:12
标题:
IO流问题
本帖最后由 陌路行者 于 2013-7-8 12:36 编辑
import java.io.*;
class CopyText
{
public static void main(String[] args)
{
FileReader fr = null;
FileWriter fw = null;
try
{
fr = new FileReader("RuntimeDemo.java");
fw = new FileWriter("Runtime_copy.txt");
char[] buf = new char[1024];
int num = 0;
while((num=fr.read(buf))!=-1)
{
//fr.read(buf);
fw.write(buf,0,num);
fw.flush();
}
}
catch (IOException e)
{
}
finally
{
try
{
fr.close();
}
catch (IOException e)
{
}
try
{
fw.close();
}
catch (IOException e)
{
}
}
}
}
复制代码
为什么会报空指针异常
作者:
哪颗最亮的星星
时间:
2013-7-8 12:30
你的代码有点小问题,你要判断下流是否为空,不为空在关。
代码如下:
import java.io.*;
class CopyText
{
public static void main(String [] args)
{
FileReader fr=null;
FileWriter fw=null;
try
{
fr=new FileReader("RuntimeDemo.java");
fw=new FileWriter("d:\\Runtime_copy.txt");
char [] buf=new char[1024];
int num=0;
while((num=fr.read(buf))!=-1)
{
// fr.read(buf);
fw.write(buf,0,num);
fw.flush();
}
}
catch(IOException e)
{
System.out.println("复制失败"+e.toString());
}
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());
}
}
}
}
}
作者:
陌路行者
时间:
2013-7-8 12:34
oh my god!又大意了,谢啦! 问题已然解决
作者:
王磊
时间:
2013-7-8 12:40
当前路径下没有RuntimeDemo.java文件,读取FileReader没有关联到源文件,则fr和fw都为null,不判断关流会报空指针异常。
如果能确保当前路径下有源文件,可不进行判断,因为一定会关联。不过最好管资源语句进行下判断,以防出现空指针。
作者:
lanbuohan
时间:
2013-7-8 14:31
你在读取时事这个RuntimeDemo.java文件,后面你有一个关闭流的命令fr.close();,其中就是在处理fr = new FileReader("RuntimeDemo.java"),这时如果你的路径下没有这个文件,这个关闭命令就使错误了,你没有东西,你关闭不就是空指针异常,以后你可以抛这个异常,也可以在最开始判断是否存在这个文件。
作者:
judyfun
时间:
2013-8-20 12:02
很好 很强大
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2