介绍
本篇文章给大家分享的是有关如何在Java中使用ByteArrayOutputStream,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
ByteArrayOutputStream是字节数组输出流,它继承于OutputStream。
ByteArrayOutputStream中的数据被写入一个字节数组。缓冲区会随着数据的不断写入而自动增长。可使用toByteArray()和toString()获取数据。
<强> OutputStream函数列表强>
我们来看看ByteArrayOutputStream的父类OutputStream的函数接口。
//构造函数 OutputStream () 空白close () 空白冲洗() 空写(byte[]缓冲区,int抵消,int数) 空写(byte[]缓冲区) 抽象空写(int> java包; 公共抽象类OutputStream实现Closeable,可冲洗{//将字节b写入到“输出流”中。//它在子类中实现! 公共抽象空写(int b)抛出IOException;//写入字节数b组到”字节数组输出流”中。 公共空间(字节b[])抛出IOException{写 写(b, 0, b.length); }//写入字节数b组到”字节数组输出流”中,并且关闭是“数b组的起始位置”,len是写入的长度 公共空间写(字节b [], int, int len)抛出IOException { if (b==null) { 把新NullPointerException (); }else if ((& lt;(0)| |比;b.length) | | (len & lt;0)| | ((+ len)比;b.length) | | ((+ len) & lt;0)){ 把新IndexOutOfBoundsException (); }else if (len==0) { 返回; } for (int i=0;我& lt;兰;我+ +){ 写(b [+ i)); } } 公共空间冲洗()抛出IOException { } 公共空间close()抛出IOException { } }
<强> 2。ByteArrayOutputStream源码分析(基于jdk1.7.40), 强>
java包; 进口java.util.Arrays; 公开课ByteArrayOutputStream延伸OutputStream {//保存”字节数组输出流”数据的数组 保护字节缓冲区[];//弊纸谑槭涑隽鳌钡募剖? 保护int数;//构造函数:默认创建的字节数组大小是。 公共ByteArrayOutputStream () { 这(32); }//构造函数:创建指定数组大小的“字节数组输出流” 公共ByteArrayOutputStream (int大小){ 如果(大小& lt;0) { 把新的IllegalArgumentException(“负面初始大小:“ +大小); } buf=新字节(大小); }//确认“容量”。//若“实际容量& lt;minCapacity”,则增加“字节数组输出流”的容量 私人空间ensureCapacity (int minCapacity) {//overflow-conscious代码 如果(minCapacity -缓冲区。长度比;0) 成长(minCapacity); }//增加“容量”。 私人空间增长(int minCapacity) { int oldCapacity=buf.length;//靶氯萘俊钡某跏蓟?“旧容量“x2 int newCapacity=oldCapacity & lt; & lt;1;//比较“新容量”和“minCapacity”的大小,并选取其中较大的数为“新的容量”。 如果(newCapacity - minCapacity & lt;0) newCapacity=minCapacity; 如果(newCapacity & lt;0) { 如果(minCapacity & lt;0)//溢出 把新OutOfMemoryError (); newCapacity=Integer.MAX_VALUE; } buf=数组。copyOf (buf newCapacity); }//写入一个字节b到”字节数组输出流”中,并将计数+ 1 公共同步空写(int b) { ensureCapacity(数+ 1); 但[数]=(字节)b; 数+=1; }//写入字节数b组到”字节数组输出流”中.off是“写入字节数b组的起始位置”,len是写入的长度 公共空写同步(字节b [], int, int len) { 如果((& lt;(0)| |比;b.length) | | (len & lt;0)| | ((+ len) - b。长度比;0)){ 把新IndexOutOfBoundsException (); } ensureCapacity(计数+ len); 系统。arraycopy (b,,但,,len); 数+=兰; }//写入输出流outb到”字节数组输出流”中。 公共同步的空隙用writeTo (OutputStream)抛出IOException { 出去了。写(buf 0数); }//重置”字节数组输出流”的计数。 公共同步空白重置(){ 数=0; }//将“字节数组输出流”转换成字节数组。 公共同步字节toByteArray () [] { 返回数组。copyOf (buf数); }//返回”字节数组输出流”当前计数的值 公共同步int大小(){ 返回计数; } 公共同步字符串toString () { 返回新字符串(buf 0数); } 公共同步字符串toString(字符串charsetName) 抛出UnsupportedEncodingException { 返回新字符串(buf 0统计,charsetName); } @Deprecated 公共同步字符串toString (int hibyte) { 返回新字符串(buf hibyte 0,数); } 公共空间close()抛出IOException { } }如何在Java中使用ByteArrayOutputStream