前幾節(jié)我們學習了文件字節(jié)輸入流,那么既然有文件字節(jié)輸入流,自然也有相對應(yīng)的文件字節(jié)輸出流,這一節(jié)我們就來學習文件字節(jié)輸出流。
使用輸出流通常包括4個基本步驟:
(1) 給出輸出流的目的地
(2) 創(chuàng)建指向目的地的輸出流
(3) 讓輸出流把數(shù)據(jù)寫入到目的地
(4) 關(guān)閉輸出流
本節(jié)通過學習文件字節(jié)輸出流熟悉上述4個基本步驟。
如果對文件寫入需求比較簡單,那么可以使用FileOutputStream類(文件字節(jié)輸出流),它是OutputStream類的子類(以字節(jié)為單位向文件寫入內(nèi)容),該類的實例方法都是從OutputStream類繼承來的。
我們可以使用FileOutputStream類的下列具有刷新功能的構(gòu)造方法創(chuàng)建指向文件的輸出流。
FileOutputStream(String name); FileOutputStream(File file);
第一個構(gòu)造方法使用給定的文件名name創(chuàng)建FileOutputStream流;第二個構(gòu)造方法使用File對象創(chuàng)建FileOutputStream流。參數(shù)name和file指定的文件稱為輸出流的目的地。
FileOutputStream輸出流開通一個到達文件的通道(目的地就是這個文件,輸出流指向這個文件)。
注意:如果輸出流指向的文件不存在,Java就會創(chuàng)建該文件,如果指向的文件是已存在的文件,輸出流將刷新該文件(使得文件的長度為0)。
除此之外,與創(chuàng)建輸入流相同的是,創(chuàng)建輸出流時,可能會出現(xiàn)錯誤(被稱為異常),例如,輸出流試圖要寫入的文件可能不允許操作或有其他受限等原因。所以必須在try-catch語句中的try塊部分創(chuàng)建輸出流,在catch塊部分檢測并處理這個異常。
例如,創(chuàng)建指向名為destin.txt的輸出流out:
try { FileOutputStream out = new FileoutputStream("destin.txt"); //創(chuàng)建指向文件destin.txt的輸出流 } catch(IOException e) { System.out.println("File write error:"+e); }
或
File f = new File("destin.txt"); //指定輸出流的目的地 try { FileOutputStream out = new FileOutputStream(f); //創(chuàng)建指向目的地的輸出流 } catch(IOException e) { System.out.println("Filewrite:"+e); }
我們可以使用FileOutputStream類的下列能選擇是否具有刷新功能的構(gòu)造方法創(chuàng)建指向文件的輸出流。
FileOutputStream(String name,boolean append); FileOutputStream(File file,boolean append);
當用構(gòu)造方法創(chuàng)建指向一個文件的輸出流時,如果參數(shù)append取值true,輸出流不會刷新所指向的文件(假如文件已存在),輸出流的write的方法將從文件的末尾開始向文件寫入數(shù)據(jù),參數(shù)append取值false,輸出流將刷新所指向的文件(假如文件已經(jīng)存在)。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程