上一節(jié),我們學(xué)習(xí)了文件字節(jié)輸出流的構(gòu)造方法,這一節(jié),我們繼續(xù)學(xué)習(xí)如何使用輸出流寫字節(jié)以及關(guān)閉流。
1.使用輸出流寫字節(jié)
輸出流的目的是提供通往目的地的通道,程序可以通過這個通道將程序中的數(shù)據(jù)寫入到目的地,文件字節(jié)流可以調(diào)用從父類繼承的write方法順序地寫文件。FileOutStream流順序地向文件寫入內(nèi)容,即只要不關(guān)閉流,每次調(diào)用write方法就順序地向文件寫入內(nèi)容,直到流被關(guān)閉。
字節(jié)輸出流的write方法以字節(jié)為單位向目的地寫數(shù)據(jù)。
1)void write(int n)
輸出流調(diào)用該方法向目的地寫入單個字節(jié)。
2)void write(byte b[])
輸出流調(diào)用該方法向目的地寫入一個字節(jié)數(shù)組。
3)void write(byte b[],int off,int len)
給定字節(jié)數(shù)組中起始于偏移量off處取len個字節(jié)寫到目的地。
4)void close()
關(guān)閉輸出流。
注意:FileOutputStream流順序地寫文件,只要不關(guān)閉流,每次調(diào)用write方法就順序地向目的地寫入內(nèi)容,直到流被關(guān)閉。
2.關(guān)閉流
在操作系統(tǒng)把程序所寫到輸出流上的那些字節(jié)保存到磁盤上之前,有時被存放在內(nèi)存緩沖區(qū)中,通過調(diào)用close()方法,可以保證操作系統(tǒng)把流緩沖區(qū)的內(nèi)容寫到它的目的地,即關(guān)閉輸出流可以把該流所用的緩沖區(qū)的內(nèi)容沖洗掉,通常沖洗到磁盤文件上。
例如:
import java.io.*; public class Main { public static void main(String args[]) { byte [] a = "新年快樂".getBytes(); byte [] b = "Happy New Year".getBytes(); File file = new File("a.txt"); //輸出的目的地 try { OutputStream out = new FileOutputStream(file); //指向目的地的輸出流 System.out.println(file.getName()+"的大小:"+file.length()+"字節(jié)"); out.write(a); //向目的地寫數(shù)據(jù) out.close(); out = new FileOutputStream(file,true); //準備向文件尾加內(nèi)容 System.out.println(file.getName()+"的大小:"+file.length()+"字節(jié)"); out.write(b,0,b.length); System.out.println(file.getName()+"的大小:"+file.length()+"字節(jié)"); out.close(); } catch(IOException e) { System.out.println("Error"+e); } } }
運行結(jié)果如下:
a.txt的大小:0字節(jié) a.txt的大小:12字節(jié) a.txt的大小:26字節(jié)
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導(dǎo)課程