更新時間:2020-05-19 16:25:57 來源:動力節(jié)點 瀏覽2501次
Java輸出流
在抽象超類OutputStream中定義了三個重要的方法:write(),flush()和close()。write()方法將字節(jié)寫入輸出流。它有三個版本,允許我們一次寫一個字節(jié)或多個字節(jié)。flush()方法用于將任何緩沖的字節(jié)刷新到數(shù)據(jù)宿。close()方法關(guān)閉輸出流。要使用BufferedOutputStream裝飾器以更好的速度寫入文件,請使用以下語句:
BufferedOutputStreambos=newBufferedOutputStream(newFileOutputStream("youroutputfilepath"));
要將數(shù)據(jù)寫入ByteArrayOutputStream,請使用
ByteArrayOutputStreambaos=newByteArrayOutputStream();
baos.write(buffer);//bufferisabytearray
Java文件輸出流
要寫入文件,我們需要創(chuàng)建一個FileOutputStream類的對象,它將表示輸出流。當寫入文件時,如果文件不存在,Java會嘗試創(chuàng)建文件。我們必須準備好處理這個異常,將代碼放在try-catch塊中,如果文件包含數(shù)據(jù),數(shù)據(jù)將被擦除。為了保留現(xiàn)有數(shù)據(jù)并將新數(shù)據(jù)附加到文件,我們需要使用FileOutputStream類的另一個構(gòu)造函數(shù),它接受一個布爾標志,用于將新數(shù)據(jù)附加到文件。要將數(shù)據(jù)附加到文件,請在第二個參數(shù)中傳遞true,使用以下代碼。
FileOutputStreamfos=newFileOutputStream(destFile,true);
寫數(shù)據(jù)
FileOutputStream類有一個重載的write()方法將數(shù)據(jù)寫入文件。我們可以使用不同版本的方法一次寫入一個字節(jié)或多個字節(jié)。通常,我們使用FileOutputStream寫入二進制數(shù)據(jù)。要向輸出流中寫入諸如“Hello"的字符串,請將字符串轉(zhuǎn)換為字節(jié)。String類有一個getBytes()方法,該方法返回表示字符串的字節(jié)數(shù)組。我們給FileOutputStream寫一個字符串如下:
Stringtext="Hello";
byte[]textBytes=text.getBytes();
fos.write(textBytes);
我們需要使用flush()方法刷新輸出流。刷新輸出流指示如果任何寫入的字節(jié)被緩沖,則。close()方法可能拋出一個IOException異常。如果我們希望自動關(guān)閉tit,請使用try-with-resources創(chuàng)建輸出流。以下代碼顯示如何將字節(jié)寫入文件輸出流。它們可以被寫入數(shù)據(jù)宿。關(guān)閉輸出流類似于關(guān)閉輸入流。我們需要使用close()方法關(guān)閉輸出流
Java打印流
PrintStream類是輸出流的具體裝飾器。PrintStream可以以合適的格式打印任何數(shù)據(jù)類型值,基本或?qū)ο蟆rintStream可以將數(shù)據(jù)寫入輸出流不拋出IOException。如果一個方法拋出一個IOException,PrintStream設(shè)置一個內(nèi)部標志,而不是拋出異常給調(diào)用者。可以使用其checkError()方法檢查該標志,如果在方法執(zhí)行期間發(fā)生IOException,則返回true。PrintStream具有自動刷新功能。我們可以在其構(gòu)造函數(shù)中指定它應(yīng)該自動刷新寫入它的內(nèi)容。如果我們將auto-flush標志設(shè)置為true,當寫入一個字節(jié)數(shù)組時,PrintStream將刷新它的內(nèi)容,它的一個重載的println()方法用于寫入數(shù)據(jù),一個換行符
Java數(shù)據(jù)輸出流
DataOutputStream可以將Java基本數(shù)據(jù)類型值寫入輸出流。DataOutputStream類包含一個寫入數(shù)據(jù)類型的寫入方法。它支持使用writeUTF(Stringtext)方法將字符串寫入輸出流。以下代碼將一個int值,一個double值,一個布爾值和一個字符串寫入名為primitives.dat的文件。
Java管道
管道連接輸入流和輸出流。
管道I/O基于生產(chǎn)者-消費者模式,其中生產(chǎn)者產(chǎn)生數(shù)據(jù)并且消費者消費數(shù)據(jù)。
在管道I/O中,我們創(chuàng)建兩個流代表管道的兩端。PipedOutputStream對象表示一端,PipedInputStream對象表示另一端。我們使用兩個對象上的connect()方法連接兩端。
我們還可以通過在創(chuàng)建另一個對象時將一個對象傳遞給構(gòu)造函數(shù)來連接它們。
以下代碼顯示了創(chuàng)建和連接管道兩端的兩種方法:
第一種方法創(chuàng)建管道輸入和輸出流并連接它們。它使用connect方法連接兩個流。
PipedInputStreampis=newPipedInputStream();
PipedOutputStreampos=newPipedOutputStream();
pis。connect(pos);/*Connectthetwoends*/
第二種方法創(chuàng)建管道輸入和輸出流并連接它們。它通過將輸入管道流傳遞到輸出流構(gòu)造器來連接兩個流。
PipedInputStreampis=newPipedInputStream();
PipedOutputStreampos=newPipedOutputStream(pis);
我們可以在連接管道的兩端后生成和使用數(shù)據(jù)。
我們通過使用PipedOutputStream對象的一個write()方法產(chǎn)生數(shù)據(jù)。無論我們對管道輸出流寫入什么,自動變得可用于管道輸入流對象進行讀取。
我們使用PipedInputStream的read()方法從管道讀取數(shù)據(jù)。如果數(shù)據(jù)在嘗試從管道讀取時不可用,則管道輸入流被阻止。
管道流具有固定容量的緩沖器,以在寫入管道和從管道讀取之間存儲數(shù)據(jù)。
我們可以設(shè)置管道容量,當我們創(chuàng)建它。如果管道的緩沖區(qū)已滿,則嘗試在管道上寫入將被阻止。
以下代碼創(chuàng)建緩沖區(qū)容量為2048字節(jié)的管道輸入和輸出流。
PipedOutputStreampos=newPipedOutputStream();
PipedInputStreampis=newPipedInputStream(pos,2048);
管道用于將數(shù)據(jù)從一個線程傳輸?shù)搅硪粋€線程。兩個線程之間的同步由阻塞讀和寫來處理。
以上就是動力節(jié)點java培訓(xùn)機構(gòu)的小編針對“技術(shù)分享,Java輸出流文件”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743