Java基礎-IO流對象之內存操作流(ByteArrayOutputStream與ByteArrayInputStream)
作者:尹正傑
版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
一.內存操作流特點
內存操作流是為了臨時處理數據而設置的。內存操作流分為“ByteArrayOutputStream”和“ByteArrayInputStream”。
“ByteArrayOutputStream”類實現了一個輸出流,其中的數據被寫入一個 byte 數組。緩沖區會隨着數據的不斷寫入而自動增長。可使用 toByteArray()
和 toString()
獲取數據。關閉 ByteArrayOutputStream 無效。此類中的方法在關閉此流后仍可被調用,而不會產生任何 IOException。
“ByteArrayInputStream”包含一個內部緩沖區,該緩沖區包含從流中讀取的字節。內部計數器跟蹤 read
方法要提供的下一個字節。關閉 ByteArrayInputStream 無效。此類中的方法在關閉此流后仍可被調用,而不會產生任何 IOException。
二.內存操作流使用案例
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.note6; 8 9 import java.io.ByteArrayInputStream; 10 import java.io.ByteArrayOutputStream; 11 12 public class ByteArrayOutputStreamDemo { 13 public static void main(String[] args) { 14 ByteArrayOutputStream bos = new ByteArrayOutputStream(); 15 16 byte[] buf = "yinzhengjie@2018".getBytes(); 17 int len = buf.length; 18 //將指定的字節寫入此 byte 數組輸出流。 19 bos.write(100); 20 //將指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此 byte 數組輸出流。 21 bos.write(buf, 0, len); 22 byte[] cache = new byte[1024]; 23 24 25 //定義一個讀取的流,需要傳入一個內部緩沖區,這個緩沖區需要和寫入的緩沖區是同一個喲,不然存在讀取不到數據的情況。 26 ByteArrayInputStream bis = new ByteArrayInputStream(buf); 27 while( (len = bis.read()) != -1 ) { 28 System.out.print((char)len); 29 } 30 } 31 } 32 33 34 /* 35 以上代碼執行結果如下: 36 yinzhengjie@2018 37 */