大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java輸出流介紹

Java輸出流介紹

更新時(shí)間:2022-07-26 10:55:10 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1292次

Java 輸出流子類

以下是 Java OutputStream類 的一些著名子類:

字節(jié)數(shù)組輸出流

文件輸出流

管道輸出流

緩沖輸出流

過濾器輸出流

數(shù)據(jù)輸出流

打印流

對(duì)象輸出流

輸出流和目的地

JavaOutputStream通常連接到某些數(shù)據(jù)目的地 - 如Java IO 概述中所述,如文件、網(wǎng)絡(luò)連接、管道、內(nèi)存緩沖區(qū)等。Java IO 概述文本中也對(duì)此進(jìn)行了更詳細(xì)的解釋。的OutputStream數(shù)據(jù)目的地是所有寫入 的數(shù)據(jù)OutputStream最終結(jié)束的地方。

寫(字節(jié))

該write(byte)方法是用來寫一個(gè)單一byte的Java OutputStream。an的write()方法OutputStream接受一個(gè) int,其中包含要寫入的字節(jié)的字節(jié)值。int僅寫入值的第一個(gè)字節(jié)。其余的被忽略。

的子類OutputStream可能有替代write()方法。例如, DataOutputStream允許您使用相應(yīng)的方法等編寫 Java 原語,如 int、long、float、double、booleanwriteBoolean()等writeDouble()。

這是一個(gè)OutputStream write()例子:

OutputStream outputStream = new FileOutputStream("c:\\data\\output-text.txt");
而(有更多數(shù)據(jù)()){
  int 數(shù)據(jù) = 獲取更多數(shù)據(jù)();
  outputStream.write(數(shù)據(jù));
}
outputStream.close();

個(gè)while循環(huán)。退出while循環(huán)的條件是方法的返回值hasMoreData()。的實(shí)現(xiàn)hasMoreData()沒有顯示,但假設(shè)如果有更多數(shù)據(jù)要寫入,則返回 true,否則返回 false。

在 while 循環(huán)內(nèi),該示例調(diào)用該方法getMoreData()以獲取要寫入 的下一個(gè)數(shù)據(jù)OutputStream,然后將該數(shù)據(jù)寫入OutputStream. while 循環(huán)繼續(xù),直到hasMoreData()返回 false。

注意:為清楚起見,此處跳過了正確的異常處理。要了解有關(guān)正確異常處理的更多信息,請(qǐng)轉(zhuǎn)到Java IO 異常處理。

寫(字節(jié)[])

JavaOutputStream必須使用 write 方法,使您能夠一次將字節(jié)數(shù)組寫入OutputStream。這些寫入方法是:

write(byte[] bytes)

write(byte[] bytes, int offset, int length)

該方法將數(shù)組中的 write(byte[] bytes)所有字節(jié)寫入. byteOutputStream

該write(byte[] bytes, int offset, int length)方法將從字節(jié)數(shù)組的length索引開始的字節(jié)寫入. offsetOutputStream

這兩種方法都返回寫入 的實(shí)際字節(jié)數(shù)OutputStream,如果不是整個(gè)數(shù)組,或者length可以按請(qǐng)求寫入字節(jié)。

OutputStream下面是使用這兩種寫入方法中的第二種將 字節(jié)數(shù)組寫入 Java 的示例:

OutputStream outputStream = new FileOutputStream("/usr/home/jakobjenkov/output.txt");
byte[] sourceBytes = ... // 從某處獲取源字節(jié)。
int bytesWritten = outputStream.write(sourceBytes, 0, sourceBytes.length);

此示例將指示OutputStream嘗試將 sourceBytes數(shù)組中的所有字節(jié)寫入OutputStream. 執(zhí)行此代碼后, bytesWritten變量將包含實(shí)際寫入 OutputStream.

寫入性能

將字節(jié)數(shù)組寫入 Java OutputStream 比一次寫入一個(gè)字節(jié)要快。加速可能非常顯著 - 高達(dá) 10 倍或更多。因此,建議盡可能使用這些write(byte[]) 方法。

您獲得的確切加速取決于運(yùn)行 Java 代碼的計(jì)算機(jī)的底層操作系統(tǒng)和硬件。加速取決于內(nèi)存速度、硬盤速度和緩沖區(qū)大小或網(wǎng)卡速度和緩沖區(qū)大小等問題,具體取決于OutputStream將數(shù)據(jù)發(fā)送到的目的地。

通過 BufferedOutputStream 進(jìn)行透明緩沖

OutputStream您可以通過將其包裝在 Java BufferedOutputStream中 來獲得寫入 Java 的字節(jié)的透明緩沖。所有寫入 的字節(jié)BufferedOutputStream 都將首先緩沖在BufferedOutputStream. 當(dāng)緩沖區(qū)已滿時(shí),緩沖區(qū)會(huì)OutputStream立即全部刷新到底層。OutputStream這是將 Java 包裝在 a 中的示例BufferedOutputStream:

整數(shù)緩沖區(qū)大小 = 8 * 1024;
輸出流輸出流 =
    新的緩沖輸出流(
          new FileOutputStream("c:\\data\\output-file.txt"), bufferSize);

您可以BufferedOutputStream在我的BufferedOutputStream 教程中了解更多信息。

沖洗()

JavaOutputStream的flush()方法將寫入的所有數(shù)據(jù)刷新OutputStream 到底層數(shù)據(jù)目標(biāo)。例如,如果OutputStream是 aFileOutputStream 那么寫入 的字節(jié)FileOutputStream可能還沒有完全寫入磁盤。即使您的 Java 代碼已將數(shù)據(jù)寫入FileOutputStream. 通過調(diào)用flush(),您可以確保任何緩沖的數(shù)據(jù)都將被刷新(寫入)到磁盤(或網(wǎng)絡(luò),或任何其他目的地OutputStream)。OutputStream下面是通過調(diào)用Java 方法刷新寫入 Java 的數(shù)據(jù)的示例flush():

outputStream.flush();

關(guān)閉一個(gè)輸出流

將數(shù)據(jù)寫入 Java 后OutputStream,您應(yīng)該關(guān)閉它。你 OutputStream通過調(diào)用它的close()方法來關(guān)閉它。這是關(guān)閉 Java 的示例OutputStream:

OutputStream outputStream = new FileOutputStream("c:\\data\\output-text.txt");
而(有更多數(shù)據(jù)()){
    int 數(shù)據(jù) = 獲取更多數(shù)據(jù)();
    outputStream.write(數(shù)據(jù));
}
outputStream.close();

hasMoreData()和 的具體實(shí)現(xiàn)getMoreData()被省略了,但它們對(duì)于理解這個(gè)例子的原理并不是非常重要。重要的是,一旦循環(huán)結(jié)束while,并且您將數(shù)據(jù)寫入. OutputStreamclose()OutputStream

上面的例子雖然不是完全健壯的。如果write()方法拋出異常,該close()方法將永遠(yuǎn)不會(huì)被調(diào)用。該異常將使程序退出上述代碼所在的任何方法。

相反,您應(yīng)該使用 Java try with resources構(gòu)造來關(guān)閉OutputStream. 下面是一個(gè)OutputStream使用 try-with-resources 構(gòu)造關(guān)閉 Java 的示例:

嘗試(OutputStream outputStream = new FileOutputStream("c:\\data\\output-text.txt")) {
    而(有更多數(shù)據(jù)()){
        int 數(shù)據(jù) = 獲取更多數(shù)據(jù)();
        outputStream.write(數(shù)據(jù));
    }
}

try退出塊后, 會(huì)自動(dòng)調(diào)用的close()方法,因?yàn)?是 在塊的括號(hào)內(nèi)聲明的 。即使從塊內(nèi)部拋出異常, 在異常傳播到調(diào)用堆棧之前仍會(huì)調(diào)用該方法。 OutputStreamOutputStreamtrytryclose()

將 OutputStream 轉(zhuǎn)換為 Writer

JavaOutputStream是基于字節(jié)的流。您可以使用Java OutputStreamWriter類將 a 轉(zhuǎn)換OutputStream為基于字符的字符。這是將 Java 轉(zhuǎn)換為using 的示例: WriterOutputStreamWriterOutputStreamWriter

OutputStream outputStream = new FileOutputStream("c:\\data\\output.txt");
編寫器 outputStreamWriter = new OutputStreamWriter(outputStream);
outputStreamWriter.write("Hello World");

以上就是關(guān)于“Java輸出流介紹”,大家如果對(duì)此比較感興趣,想了解更多相關(guān)知識(shí),不妨來關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java基礎(chǔ)教程,里面有更豐富的知識(shí)等著大家去學(xué)習(xí),希望對(duì)大家能夠有所幫助。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国内精品一区视频在线播放 | 中文精品久久久久国产不卡 | 性欧美xo视频在线观看 | 久草在线影 | 91视频亚洲 | 手机看一级片 | 九九热国产 | a网站免费| 免费的黄色小视频 | 日韩 欧美 自拍 在线 视频 | 男女一级毛片免费播放 | 噜鲁射图片 | 日本视频中文字幕一区二区 | 91啦中文成人| 久久亚洲私人国产精品 | 在线日本韩国 | jizjizjiz亚洲大全 | 国产精品夜色7777青苹果 | 久久国产精品免费 | 久久精品国产精品青草不卡 | 免费一级毛毛片 | 欧美日韩亚洲国内综合网香蕉 | 91久久综合九色综合欧美亚洲 | 久草热久草在线 | 福利院肉动漫视频在线观看 | 五月国产综合视频在线观看 | 国产69精品久久久久99 | 伊人久久中文 | 中文在线视频 | 免费看成人播放毛片 | 91aaa免费观看在线观看资源 | 99久久综合 | 久久九九热re6这里有精品 | 精品一成人岛国片在线观看 | 国产在线精品成人一区二区三区 | 亚洲一区二区久久 | 日韩亚洲欧美性感视频影片免费看 | 国产在线一区视频 | 天天操一操 | 欧美日韩在线看 | 欧美一级片免费看 |