黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java輸出流介紹

Java輸出流介紹

更新時間:2022-07-26 10:55:10 來源:動力節點 瀏覽1381次

Java 輸出流子類

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

字節數組輸出流

文件輸出流

管道輸出流

緩沖輸出流

過濾器輸出流

數據輸出流

打印流

對象輸出流

輸出流和目的地

JavaOutputStream通常連接到某些數據目的地 - 如Java IO 概述中所述,如文件、網絡連接、管道、內存緩沖區等。Java IO 概述文本中也對此進行了更詳細的解釋。的OutputStream數據目的地是所有寫入 的數據OutputStream最終結束的地方。

寫(字節)

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

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

這是一個OutputStream write()例子:

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

個while循環。退出while循環的條件是方法的返回值hasMoreData()。的實現hasMoreData()沒有顯示,但假設如果有更多數據要寫入,則返回 true,否則返回 false。

在 while 循環內,該示例調用該方法getMoreData()以獲取要寫入 的下一個數據OutputStream,然后將該數據寫入OutputStream. while 循環繼續,直到hasMoreData()返回 false。

注意:為清楚起見,此處跳過了正確的異常處理。要了解有關正確異常處理的更多信息,請轉到Java IO 異常處理。

寫(字節[])

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

write(byte[] bytes)

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

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

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

這兩種方法都返回寫入 的實際字節數OutputStream,如果不是整個數組,或者length可以按請求寫入字節。

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

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

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

寫入性能

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

您獲得的確切加速取決于運行 Java 代碼的計算機的底層操作系統和硬件。加速取決于內存速度、硬盤速度和緩沖區大小或網卡速度和緩沖區大小等問題,具體取決于OutputStream將數據發送到的目的地。

通過 BufferedOutputStream 進行透明緩沖

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

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

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

沖洗()

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

outputStream.flush();

關閉一個輸出流

將數據寫入 Java 后OutputStream,您應該關閉它。你 OutputStream通過調用它的close()方法來關閉它。這是關閉 Java 的示例OutputStream:

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

hasMoreData()和 的具體實現getMoreData()被省略了,但它們對于理解這個例子的原理并不是非常重要。重要的是,一旦循環結束while,并且您將數據寫入. OutputStreamclose()OutputStream

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

相反,您應該使用 Java try with resources構造來關閉OutputStream. 下面是一個OutputStream使用 try-with-resources 構造關閉 Java 的示例:

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

try退出塊后, 會自動調用的close()方法,因為 是 在塊的括號內聲明的 。即使從塊內部拋出異常, 在異常傳播到調用堆棧之前仍會調用該方法。 OutputStreamOutputStreamtrytryclose()

將 OutputStream 轉換為 Writer

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

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

以上就是關于“Java輸出流介紹”,大家如果對此比較感興趣,想了解更多相關知識,不妨來關注一下動力節點的Java基礎教程,里面有更豐富的知識等著大家去學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 最新欧美精品一区二区三区不卡 | 久久中文字幕免费视频 | 99福利| jizz国产丝袜18老师美女 | 久久综合色网 | 天堂男人2021av | 中国国产一级毛片视频 | 美女高清特黄a大片 | 亚洲va中文字幕 | 日本不卡视频一区二区 | 国产精品欧美久久久久天天影视 | 全黄a一级裸片 | 伊人手机在线视频 | 青草国产精品久久久久久久久 | 国产精品成人在线播放 | 九九99九九精彩网站 | 国产成人免费全部网站 | 欧美日韩不卡视频 | 在线久色 | a免费视频| 久久精品第一页 | 天天看片天天爽_免费播放 天天看片夜夜爽 | 免费精品视频在线 | 成人国产激情福利久久精品 | 又爽又黄又无遮挡的视频在线观看 | 欧美线在线精品观看视频 | 色播视频在线观看 | 欧美专区亚洲 | 天天透天天操 | 羞羞人成午夜爽爽影院 | 午夜影院免费在线观看 | 久久精选 | 男女男精品视频网站 | 免费一级欧美在线观看视频片 | 中文字幕1区 | 欧美乱轮视频 | 午夜寂寞影院在线观看 | 欧美成成人免费 | 欧美超高清在线观看 | 天天爽夜夜爽免费看 | 欧美一级片黄色片 |