Java ByteArrayOutputStream类
The ByteArrayOutputStream类流在内存中创建一个缓冲区,所有发送到该流的数据都存储在缓冲区中。
以下是ByteArrayOutputStream类提供的构造函数列表。
序号 | 构造函数和描述 |
---|---|
1 | ByteArrayOutputStream() 此构造函数创建一个大小为32字节的字节数组输出流。 |
2 | ByteArrayOutputStream(int a) 此构造函数创建一个指定大小的字节数组输出流。 |
一旦你手上有一个 ByteArrayOutputStream 对象,那么有一系列的辅助方法可以用来写入流或者在流上进行其他操作。
序号 | 方法 & 描述 |
---|---|
1 | public void reset() 该方法将字节数组输出流的有效字节数重置为零,因此流中的所有累积输出都将被丢弃。 |
2 | public byte[] toByteArray() 该方法创建一个新分配的字节数组,其大小将是输出流的当前大小,并且缓冲区的内容将被复制到其中。将输出流的当前内容作为字节数组返回。 |
3 | public String toString() 将缓冲区内容转换为字符串。根据默认字符编码进行翻译。返回从缓冲区内容翻译得到的字符串。 |
4 | public void write(int w) 将指定数组写入输出流。 |
5 | public void write(byte []b, int of, int len) 将从偏移量off开始的len个字节写入流。 |
6 | public void writeTo(OutputStream outSt) 将此流的整个内容写入指定的流参数。 |
示例
以下是一个示例,演示了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 ) {
// 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