前面学习ByteArrayInputStream,了解了“输入流”。接下来,我们学习与ByteArrayInputStream相对应的输出流,即ByteArrayOutputStream。
本章,我们会先对ByteArrayOutputStream进行介绍,在了解了它的源码之后,再通过示例来掌握如何使用它。

转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_03.html

ByteArrayOutputStream 介绍

ByteArrayOutputStream 是字节数组输出流。它继承于OutputStream。
ByteArrayOutputStream 中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。


OutputStream 函数列表

我们来看看ByteArrayOutputStream的父类OutputStream的函数接口

java io系列03之 ByteArrayOutputStream的简介,源码分析和示例(包括OutputStream)
// 构造函数
OutputStream()

         void    close()
         void    flush()
         void    write(byte[] buffer, int offset, int count)
         void    write(byte[] buffer)
abstract void    write(int oneByte)
java io系列03之 ByteArrayOutputStream的简介,源码分析和示例(包括OutputStream)

ByteArrayOutputStream 函数列表

java io系列03之 ByteArrayOutputStream的简介,源码分析和示例(包括OutputStream)
// 构造函数
ByteArrayOutputStream()
ByteArrayOutputStream(int size)

             void    close()
synchronized void    reset()
             int     size()
synchronized byte[]  toByteArray()
             String  toString(int hibyte)
             String  toString(String charsetName)
             String  toString()
synchronized void    write(byte[] buffer, int offset, int len)
synchronized void    write(int oneByte)
synchronized void    writeTo(OutputStream out)
java io系列03之 ByteArrayOutputStream的简介,源码分析和示例(包括OutputStream)

 

OutputStream和ByteArrayOutputStream源码分析

OutputStream是ByteArrayOutputStream的父类,我们先看看OutputStream的源码,然后再学ByteArrayOutputStream的源码。

1. OutputStream.java源码分析(基于jdk1.7.40)

java io系列03之 ByteArrayOutputStream的简介,源码分析和示例(包括OutputStream)
 1 package java.io;
 2 
 3 public abstract class OutputStream implements Closeable, Flushable {
 4     // 将字节b写入到“输出流”中。
 5     // 它在子类中实现!
 6     public abstract void write(int b) throws IOException;
 7 
 8     // 写入字节数组b到“字节数组输出流”中。
 9     public void write(byte b[]) throws IOException {
10         write(b, 0, b.length);
11     }
12 
13     // 写入字节数组b到“字节数组输出流”中,并且off是“数组b的起始位置”,len是写入的长度
14     public void write(byte b[], int off, int len) throws IOException {
15         if (b == null) {
16             throw new NullPointerException();
17         } else if ((off < 0) || (off > b.length) || (len < 0) ||
18                    ((off + len) > b.length) || ((off + len) < 0)) {
19             throw new IndexOutOfBoundsException();
20         } else if (len == 0) {
21             return;
22         }
23         for (int i = 0 ; i < len ; i++) {
24             write(b[off + i]);
25         }
26     }
27 
28     public void flush() throws IOException {
29     }
30 
31     public void close() throws IOException {
32     }
33 }
java io系列03之 ByteArrayOutputStream的简介,源码分析和示例(包括OutputStream)

相关文章:

  • 2021-09-12
  • 2021-12-11
  • 2021-11-27
  • 2021-11-08
  • 2022-01-30
  • 2021-09-05
  • 2022-01-06
猜你喜欢
  • 2021-07-14
  • 2021-09-04
  • 2021-10-12
  • 2021-11-23
相关资源
相似解决方案