关于IO流中异常的注意事项

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

/*
IO流中异常注意事项:
首先:在实例化一个流对象时,会给对象传一个对象,如果传入的对象是不存在的那么就会产生异常,所以必    须要try...catch异常;
第二:在try...catch的时候,定义流对象的引用变量必须放在try...catch语句块外面,
   因为这两个引用变量是全局常量,如果过在语句块中,他们就变成了局部变量了;
第三:如果两个对象在初始化的时候发生了异常,余下的代码运行也不会有任何意义,所以可以一起放到                      try...catch代码块中
第四:一个流对象在运行完毕后,必须要把流资源关闭掉,我们知道无论前面程序如何finally语句块都会执                行,所以我们就把
 关闭流资源的语句放到finally语句块当中;
第五:如果初始化的时候,流对象就没有成功,这时会抛出异常,但finally里面的程序依旧会继续运行,但根本            就没有流对象,怎么可能关闭呢,这样就会出现空指针异常,所以在进行流资源关闭是,务必要对流资源          对象进行判断,确定流资源对象的存在;
*/



import java.io.*;


class IOExceptionDemo
{
public static void main(String[] args)
{
FileReader fr = null;//这两个对象必须要定义在语句块外面,因为是全局变量
FileWriter fw = null;


try
{
fr = new FileReader("a.txt");
fw = new FileWriter("b.txt");

char [] ch = new char[1024];//[]里的数字最好是1024的整数倍,具体大小,依据要操作的文件大小而定
int count = 0;
while((count=fr.read(ch))!=-1)
{
fw.write(ch,0,count);//从数组里打印数据,只从0到读取的长度,这样节省时间
fw.flush();
}
}
catch (IOException e)
{
System.out.println(e.toString());
}

finally//当finally语句快中要同是关闭多个流资源是,每个流资源都必须是分别try...catch的,不可以放在一个try...catch语句块中
{
try
{
if (fw != null)
fw.close();
}
catch (IOException e)
{
System.out.println(e.toString());
}
try
{
if (fr != null)//这句话必须要有,这样可以防止流资源对象不存在产生的异常
fr.close();
}
catch (IOException e)
{
System.out.println(e.toString());
}


}


}
}


---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

你可能感兴趣的:(关于IO流中异常的注意事项)