Java ByteArrayOutputStream類

2019-10-16 22:21:02

ByteArrayOutputStream類流在記憶體中建立緩衝區,並且傳送到流的所有資料都儲存在緩衝區中。

以下是ByteArrayOutputStream類提供的建構函式列表。

編號 建構函式 描述
1 ByteArrayOutputStream() 此建構函式建立一個具有32位元組緩衝區的ByteArrayOutputStream物件。
2 ByteArrayOutputStream(int a) 此建構函式建立一個具有給定大小的緩衝區的ByteArrayOutputStream物件。

當建立了ByteArrayOutputStream物件,就可以使用它的輔助方法來寫入流或在流上執行其他操作。

編號 方法 描述
1 public void reset() 此方法將位元組陣列輸出流的有效位元組數重置為零,因此將丟棄流中的所有累積輸出。
2 public byte[] toByteArray() 此方法建立新分配的Byte陣列。 它的大小將是輸出流的當前大小,緩衝區的內容將被複製到其中。並以位元組陣列的形式返回輸出流的當前內容。
3 public String toString() 將緩衝區內容轉換為字串。轉換將根據預設字元編碼完成。它返回從緩衝區內容轉換的String型別資料。
4 public void write(int w) 將指定的陣列寫入輸出流。
5 public void write(byte []b, int of, int len) 將從偏移量off開始的len個位元組數寫入流。
6 public void writeTo(OutputStream outSt) 將此Stream的全部內容寫入指定的流引數。

範例

以將演示如何使用ByteArrayOutputStreamByteArrayInputStream

import java.io.*;
public class ByteStreamTest {

   public static void main(String args[])throws IOException {
      ByteArrayOutputStream bOutput = new ByteArrayOutputStream(12);

      while( bOutput.size()!= 10 ) {
         // 從使用者獲得輸入資料
         bOutput.write("hello".getBytes());  
      }
      byte b [] = bOutput.toByteArray();
      System.out.println("Print the content");

      for(int x = 0; x < b.length; x++) {
         // 列印字元
         System.out.print((char)b[x]  + "   "); 
      }
      System.out.println("   ");

      int c;
      ByteArrayInputStream bInput = new ByteArrayInputStream(b);
      System.out.println("Converting characters to Upper case " );

      for(int y = 0 ; y < 1; y++ ) {
         while(( c = bInput.read())!= -1) {
            System.out.println(Character.toUpperCase((char)c));
         }
         bInput.reset(); 
      }
   }
}

執行上面範例程式碼,得到以下結果 -

Print the content
h   e   l   l   o   h   e   l   l   o      
Converting characters to Upper case 
H
E
L
L
O
H
E
L
L
O