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 的全部内容写入指定的流参数。 |
示例
以将演示如何使用ByteArrayOutputStream
和ByteArrayInputStream
。
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