1. 程式人生 > >關於IO流中異常的注意事項

關於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培訓、期待與您交流! ----------------------