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

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

Java輸出流介紹

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

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基礎教程,里面有更豐富的知識等著大家去學習,希望對大家能夠有所幫助。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美一级中文字幕 | 日本在线一区二区 | 欧美亚洲国产精品第一页 | 亚洲欧美综合区自拍另类 | 老司机午夜视频在线观看 | 97国产精品 | 欧美激情在线 | 久久亚洲精品一区二区三区浴池 | 91在线九色 | 国产一区二区在线视频观看 | 色天使久久综合网天天 | 久久男人资源站 | 黑人巨大精品战中国美女 | 国产真实强j视频在线观看 国产真实偷乱视频在线观看 | 亚洲成a人片在线v观看 | 又爽又黄又无遮挡的视频在线观看 | a毛片免费在线观看 | 欧美人与鲁交大毛片免费 | 精品视频久久 | 国产在线视频一区 | 在线免费黄色片 | 国产精品成人免费视频 | 99久久精品国产9999高清 | www.色94色.com| 欧美成人综合在线 | 久草在线国产视频 | 欧美成人精品福利在线视频 | 香蕉成人啪国产精品视频综合网 | 国产香蕉尹人综合在线 | 国产精品午夜波多野结衣性色 | 亚洲一区 在线播放 | 久久r热这里有精品视频 | 婷婷中文网| 国产免费一级精品视频 | 国产精品视频免费播放 | 欧美精品影视 | 久久综合久久久久 | 久九九久福利精品视频视频 | 成人毛片免费观看视频 | 黄色午夜影院 | 亚洲九九视频 |