類 OutputStream方法
void |
write(byte[] b) 將 b.length 個字節從指定的 byte 數組寫入此輸出流。 |
void |
write(byte[] b, int off, int len) 將指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此輸出流。 |
abstract void |
write(int b) 將指定的字節寫入此輸出流。 |
類 FileOutputStream
FileOutputStream(String name, boolean append) 創建一個向具有指定 name 的文件中寫入數據的輸出文件流。 |
類 BufferedOutputStream
BufferedOutputStream(OutputStream out) 創建一個新的緩衝輸出流,以將數據寫入指定的底層輸出流。 |
類 ObjectOutputStream
ObjectOutputStream 將 Java 對象的基本數據類型和圖形寫入 OutputStream。可以使用 ObjectInputStream 讀取(重構)對象。通過在流中使用文件可以實現對象的持久存儲。如果流是網絡套接字流,則可以在另一臺主機上或另一個進程中重構對象。
類 PipedOutputStream
可以將管道輸出流連接到管道輸入流來創建通信管道。管道輸出流是管道的發送端。通常,數據由某個線程寫入 PipedOutputStream
對象,並由其他線程從連接的 PipedInputStream
讀取。不建議對這兩個對象嘗試使用單個線程,因爲這樣可能會造成該線程死鎖。如果某個線程正從連接的管道輸入流中讀取數據字節,但該線程不再處於活動狀態,則該管道被視爲處於 毀壞 狀態。
PipedOutputStream() 創建尚未連接到管道輸入流的管道輸出流。 |
PipedOutputStream(PipedInputStream snk) 創建連接到指定管道輸入流的管道輸出流。 |
類 DataOutputStream
void |
writeInt(int v) 將一個 int 值以 4-byte 值形式寫入基礎輸出流中,先寫入高字節。 |
類 ByteArrayOutputStream
ByteArrayOutputStream: 在構造的時候,不用定義數據目的,因爲該對象中已經內部封裝了可變長度的字節數組。
這就是數據目的地。
因爲這兩個流對象都操作的數組,並沒有使用系統資源。
所以,不用進行close關閉
鍵盤 System.in,硬盤 FileStream,內存 ArrayStream。
目的設備:
控制檯 System.out,硬盤FileStream,內存 ArrayStream
byte[] |
toByteArray() 創建一個新分配的 byte 數組。 |
String |
toString() 使用平臺默認的字符集,通過解碼字節將緩衝區內容轉換爲字符串。 |
類 InputStream方法
int |
available() 返回此輸入流下一個方法調用可以不受阻塞地從此輸入流讀取(或跳過)的估計字節數。 (!多線程時讀取或跳過的字節數可能小於該數,試圖使用此方法的返回值分配緩衝區來實現讀取和跳過是不正確的)
|
類 FileInputStream
類 BufferedInputStream
字段摘要 | |
---|---|
protected byte[] |
buf 存儲數據的內部緩衝區數組。 |
protected int |
count 比緩衝區中最後一個有效字節的索引大 1 的索引。 buf[0] 到 buf[count-1] 的元素包含從底層輸入流中獲取的緩衝輸入數據 |
protected int |
marklimit 調用 mark 方法後,在後續調用 reset 方法失敗之前所允許的最大提前讀取量。 |
protected int |
markpos 最後一次調用 mark 方法時 pos 字段的值。 |
protected int |
pos 緩衝區中的當前位置。 |
字節流的讀一個字節的read方法爲什麼返回值類型不是byte,而是int。
因爲有可能會讀到連續8個二進制1的情況,8個二進制1對應的十進制是-1.
那麼就會數據還沒有讀完,就結束的情況。因爲我們判斷讀取結束是通過結尾標記-1來確定的。
所以,爲了避免這種情況將讀到的字節進行int類型的提升。
並在保留原字節數據的情況前面了補了24個0,變成了int類型的數值。
而在寫入數據時,只寫該int類型數據的最低8位。
類 ObjectInputStream
ObjectInputStream 對以前使用 ObjectOutputStream 寫入的基本數據和對象進行反序列化。
類 PipedInputStream
PipedInputStream
對象讀取,並由其他線程將其寫入到相應的 PipedOutputStream
。不建議對這兩個對象嘗試使用單個線程,因爲這樣可能死鎖線程。管道輸入流包含一個緩衝區,可在緩衝區限定的範圍內將讀操作和寫操作分離開。如果向連接管道輸出流提供數據字節的線程不再存在,則認爲該管道已損壞。PipedInputStream(PipedOutputStream src) 創建 PipedInputStream ,使其連接到管道輸出流 src 。 |
類 DataInputStream
int |
readInt() 參見 DataInput 的 readInt 方法的常規協定。可見有兩個大接口DataInput,和DataOutput |