java的outputstream
1. Java輸出流FileOutputStream的詳細使用
上一節描述了如何使用輸入流FileInputStream從本地文件讀取數據. 本節介紹應用程序輸出文件FileOutputStream,以將數據寫入本地文件.
使用FileOutputStream寫入文件的過程如下:
使用FileOutputStream寫入文件的過程與使用FileInputStream的過程相同. 兩者都使用File類打開本地文件,實例化輸入和輸出流,然後調用該流的讀寫方法以讀取或寫入數據,最後關閉該流.
FileOutputStream的構造方法
FileOutputStream提供了四種用於實例化FileOutputStream對象的常用構造方法. 在不同的場景中使用不同的構造方法.
場景1: 使用File對象打開本地文件並從文件中讀取數據.
場景2: 不使用File對象,而是直接傳遞文件路徑.
FileOutputStream的構造方法允許直接在文件路徑中傳遞而不使用File對象. 查看構造方法的源代碼,該方法使用File對象打開文件.
場景3: 打開文件並將數據添加到文件末尾.
場景要求將數據寫入文件末尾. 由於前兩個構造函數都開始將數據寫入文件(覆蓋原始文件),因此無法使用前兩個場景的構造函數. FileOutputStream分別提供了另外兩種構造方法:
FileOutputStream(文件文件,布爾值附加);
FileOutputStream(字元串名稱,布爾值附加);
與以前的構造方法相比,這兩種構造方法均具有附加的布爾參數附加. 當append參數為true時,將從文件末尾寫入數據;否則為false. 當append參數為false時,數據將覆蓋原始文件.
FileOutputStream編寫方法
FileOutputStream類提供了多種文件寫入方法. 您可以單獨將位元組寫入文件,可以將位元組數組寫入文件,也可以將位元組數組數據的一部分寫入文件.
示例1: 使用write(int b)方法寫入文件.
示常式序首先調用File類的createNewFile()創建new.txt文件,然後將str的內容寫入新創建的new.txt文件.
示例2: 使用write(位元組[] b)方法寫入文件.
The
write(byte [] b)方法用於將b.length個位元組從指定的位元組數組寫入輸出流.
String類的getBytes()方法可以將字元串轉換為位元組數組,並使用FileOutputStream類的write(byte [] b)方法將轉換後的位元組數組寫入文件.
示例3: 使用write(位元組[] b,int offfilestream方法參數,int len)方法寫入文件.
此方法從數組b的關閉位置開始將len位元組的數據寫入輸出流.
程序將指定的str內容寫入文件. fos.write(str.getBytes(),5,10)語句的第一個參數是位元組數組,第二個參數5是位元組數組中的下標. 從5開始,第三個參數是寫入的位元組數. 程序執行後,寫入內容為「是新文件」.
使用此方法時,必須注意數組超出范圍的問題. 例如,如果位元組數組的長度為20(從下標12開始),則向文件寫入15個位元組將導致數組越過邊界,程序將報告錯誤.
示例4: 使用FileOutputStream復制文件
復制文件是將源文件數據寫入新文件. 在實際編程中filestream方法參數,有很多方法可以復制文件. 在這種情況下,FileInputStream和FileOutputStream用於復制文件.
代碼中的File完成文件復制. 復制之前,首先要確定源文件是否存在,然後申請位元組數組來存儲讀取的源文件數據,數組的大小和源文件的總位元組數相同,讀取成功後,然後將數組的內容寫入目標文件. 該程序的輸出如下所示:
■知識撥盤
使用FileOutputStream流可以將位元組數據寫入目標文件. FileOutputStream提供了單位元組寫入和位元組數組寫入的兩種方式. 建議使用位元組數組進行寫入,將要寫入的數據存儲到位元組數組中,然後再寫入文件. 當寫入文件已經存在時,您需要指出寫入方法是覆蓋還是附加.