關於IO流中異常的注意事項
阿新 • • 發佈:2019-02-04
---------------------- 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培訓、期待與您交流! ----------------------