如何在Java中使用ByteArrayOutputStream

  介绍

本篇文章给大家分享的是有关如何在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