1.OutputStream
類
我們最近剛剛探索了輸入流。是時候討論輸出流了。
該類OutputStream
是所有支持字節輸出的類的父類。這是一個抽像類,它自己什麼都不做,但它有適用於各種場合的子類。
這聽起來非常複雜。更簡單地說,此類對字節進行操作,而不是對字符或其他數據類型進行操作。而且它是抽象的這一事實意味著我們通常不使用它,而是使用它的後代類之一。比如,FileOutputStream
之類的。
但是回到OutputStream
課堂上。此類具有其所有後代類都必須實現的方法。以下是主要的:
方法 | 描述 |
---|---|
|
將一個字節(不是int )寫入流。 |
|
將字節數組寫入流 |
|
將字節數組的一部分寫入流 |
|
將緩衝區中存儲的所有數據寫入流 |
|
關閉流 |
當您創建一個繼承類的對象時InputStream
,您通常會指定一個從中讀取數據的源對象InputStream
。當您創建一個繼承類的對象時OutputStream
,您通常還會指定數據將寫入的目標對像或流。
讓我們簡要介紹一下該類的所有方法OutputStream
:
write(int b)
方法
此方法將一個字節(不是int
)寫入輸出流。傳遞的值被強制轉換為一個字節,並且丟棄該 int 的前三個字節。
write(byte[] buffer)
方法
將給定的字節數組寫入輸出流。就是這樣。
write(byte[] buffer, int offset, int length)
方法
將傳遞的字節數組的一部分寫入輸出流。偏移量變量表示數組第一個元素的索引,是length
要寫入的子集的長度。
flush()
方法
該flush()
方法用於強制將當前流中可能緩衝的任何數據寫入目標流。這在使用緩沖和/或排列在鏈中的多個流對象時是相關的。
close()
方法
將任何未寫入的數據寫入目標對象。close()
如果您使用塊,則無需調用該方法try-with-resources
。
複製文件的例子
代碼 | 筆記 |
---|---|
|
InputStream 用於從文件中讀取OutputStream 用於寫入文件將數據讀入的緩衝區 只要流中有數據 將數據讀入緩衝區 將緩衝區中的數據寫入第二個流 |
2.Writer
類
該類Writer
與類完全相同OutputStream
,但只有一個區別:它使用字符 ( char
) 而不是字節。
這是一個抽像類:您不能創建該類的對象Writer
。它的主要目標是成為數百個後代類的公共父類,並為它們提供處理字符流的通用方法。
Writer
該類(及其所有後代類)的方法:
方法 | 描述 |
---|---|
|
將一個字符(不是int )寫入流。 |
|
將字符數組寫入流 |
|
將字符數組的一部分寫入流 |
|
將字符串寫入流 |
|
將字符串的一部分寫入流 |
|
將緩衝區中存儲的所有數據寫入流 |
|
關閉流 |
這些方法與類的方法非常相似OutputStream
,但它們使用字符而不是字節。
方法說明:
write(int b)
方法
此方法將單個字符 ( char
— 而不是int
) 寫入輸出流。傳遞的值被轉換為 a char
,前兩個字節被丟棄。
write(char[] buffer)
方法
將給定的字符數組寫入輸出流。
write(char[] buffer, int offset, int length)
方法
將傳遞的字符數組的一部分寫入輸出流。該offset
變量表示數組第一個元素的索引,length
是要寫入的子集的長度。
write(String str)
方法
將給定的字符串寫入輸出流。
write(String str, int offset, int length)
方法
將給定字符串的一部分寫入輸出流:字符串被轉換為字符數組。該offset
變量表示數組第一個元素的索引,length
是要寫入的子集的長度。
flush()
方法
該flush()
方法用於強制將當前流中可能緩衝的任何數據寫入目標流。這在使用緩沖和/或排列在鏈中的多個流對象時是相關的。
close()
方法
將任何未寫入的數據寫入目標對象。close()
如果您使用塊,則無需調用該方法try-with-resources
。
複製文本文件的程序示例:
代碼 | 筆記 |
---|---|
|
Reader 用於從文件中Writer 讀取 用於寫入文件我們將讀取數據的緩衝區 只要流中有數據 將數據讀入緩衝區 將緩衝區中的數據寫入第二個流 |
StringWriter
班級
還有一個有趣的類繼承了該類Writer
:它被稱為StringWriter
. 它包含一個可變字符串——一個StringBuffer
對象。每次您向StringWriter
對象“寫入”內容時,文本都會簡單地添加到其內部緩衝區中。
例子:
代碼 | 筆記 |
---|---|
|
一個目標字符流( StringWriter )被創建一個字符串被寫入緩衝區裡面 StringWriter 一個字符串被寫入緩衝區裡面 StringWriter 一個對象的內容轉換成字符串 |
在這種情況下,該類StringWriter
本質上是該類的包裝器StringBuffer
,但該類StringWriter
是流類的後代Writer
,並且可以在流對象鏈中使用。這在實踐中是一個非常有用的屬性。
GO TO FULL VERSION