API说明:此类实现一个字节输出流、其中数据被写入到字节数组中, 缓冲区在数据写入时会自动增长,关闭该流无效,关闭此流后调用方法不会有异常
/**
* 存储数据的缓冲区
*/
protected byte buf[];
/**
* 缓冲区中的有效字节数
*/
protected int count;
/**
* 创建新的字节数组输出流、默认缓冲区大小是32个字节
*/
public ByteArrayOutputStream() {
this(32);
}
/**
* 创建新的字节数组输出流,以指定的大小
*/
public ByteArrayOutputStream(int size) {
if (size < 0) {
throw new IllegalArgumentException("Negative initial size: "
+ size);
}
buf = new byte[size];
}
1)write(int b):写入指定的字节到此字节输出流中
/**
* 写入指定的字节到此字节输出流中
*/
public synchronized void write(int b) {
ensureCapacity(count + 1);
buf[count] = (byte) b;
count += 1;
}
2)write(byte b[], int off, int len):从指定数组的下标off开始写入len个字节到该输出流中
/**
* 从指定数组的下标off开始写入len个字节到该输出流中
*/
public synchronized void write(byte b[], int off, int len) {
if ((off < 0) || (off > b.length) || (len < 0) ||
((off + len) - b.length > 0)) {
throw new IndexOutOfBoundsException();
}
ensureCapacity(count + len);
System.arraycopy(b, off, buf, count, len);
count += len;
}
3)writeTo(OutputStream out):将此字节输出流的内容写入到指定的输出流中
/**
* 将此字节输出流的内容写入到指定的输出流中
*/
public synchronized void writeTo(OutputStream out) throws IOException {
out.write(buf, 0, count);
}
4)reset():重置此字节输出流,废弃此前存储的数据
/**
* 重置此字节输出流,废弃此前存储的数据
*/
public synchronized void reset() {
count = 0;
}
5)对输出流的数据进行检索
/**
* 将此输出流转成字节数组输出
*/
public synchronized byte toByteArray()[] {
return Arrays.copyOf(buf, count);
}
/**
* 将此输出流转成字符串输出
*/
public synchronized String toString() {
return new String(buf, 0, count);
}
/**
* 通过指定编码格式将缓冲区内容转换为字符串
*/
public synchronized String toString(String charsetName)
throws UnsupportedEncodingException
{
return new String(buf, 0, count, charsetName);
}
6) close():关闭流无效,关闭后调用其他方法不会有异常
/**
* 关闭流无效,关闭后调用其他方法不会有异常
*/
public void close() throws IOException {
}
暂时未使用过、所以不清楚项目中什么地方使用,因此暂时了解其功能即可