Java - ByteArrayOutputStream



Java ByteArrayOutputStream 类实现了一个输出流,其中数据写入到一个字节数组中。缓冲区会随着数据的写入自动增长。以下是关于 ByteArrayOutputStream 的重要要点:

  • 关闭 ByteArrayOutputStream 没有任何效果。

  • 在流关闭后,仍然可以调用此类中的方法,而不会产生 IOException。

类声明

以下是 Java.io.ByteArrayOutputStream 类的声明:

public class ByteArrayOutputStream
   extends OutputStream

字段

以下是 Java.io.ByteArrayOutputStream 类的字段:

  • protected byte[] buf - 这是存储数据的缓冲区。

  • protected int count - 这是缓冲区中有效字节的数量。

类构造函数

序号 构造函数及说明
1

ByteArrayOutputStream()

创建一个新的字节数组输出流。

2

ByteArrayOutputStream(int size)

创建一个新的字节数组输出流,缓冲区容量为指定的字节数。

类方法

序号 方法及说明
1 void close()

关闭 ByteArrayOutputStream 没有任何效果。

2 void reset()

此方法将此字节数组输出流的 count 字段重置为零,从而丢弃输出流中当前累积的所有输出。

3 int size()

此方法返回缓冲区的当前大小。

4 byte[] toByteArray()

此方法创建一个新分配的字节数组。

5 String toString()

此方法将缓冲区的内容转换为字符串,使用平台的默认字符集解码字节。

6 String toString(String charsetName)

此方法将缓冲区的内容转换为字符串,使用指定的 charsetName 解码字节。

7 void write(byte[] b, int off, int len)

此方法将指定字节数组中从偏移量 off 开始的 len 个字节写入此字节数组输出流。

8 void write(int b)

此方法将指定的字节写入此字节数组输出流。

9 void writeTo(OutputStream out)

此方法将此字节数组输出流的完整内容写入指定的输出流参数,就像通过使用 out.write(buf, 0, count) 调用输出流的 write 方法一样。

继承的方法

此类继承自以下类的方法:

  • Java.io.OutputStream
  • Java.io.Object

示例

以下是一个演示 ByteArrayOutputStream 和 ByteArrayInputStream 的示例。

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class ByteStreamTest {
   public static void main(String args[])throws IOException {
      ByteArrayOutputStream bOutput = new ByteArrayOutputStream(12);

      while( bOutput.size()!= 10 ) {
         // Gets the inputs from the user
         bOutput.write("hello".getBytes());  
      }
      byte b [] = bOutput.toByteArray();
      System.out.println("Print the content");
      
      for(int x = 0; x < b.length; x++) {
         // printing the characters
         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
java_files_io.htm
广告