java io学习(二)ByteArrayOutputStream的简介,源码分析和示例 - JAVA - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > OOP语言 > JAVA > 正文

java io学习(二)ByteArrayOutputStream的简介,源码分析和示例

来源: www.bianceng.cn 阅读:

ByteArrayOutputStream的简介,源码分析和示例(包括OutputStream)

前面学习ByteArrayInputStream,了解了“输入流”。接下来,我们学习与ByteArrayInputStream相对应的输出流,即ByteArrayOutputStream。

本章,我们会先对ByteArrayOutputStream进行介绍,在了解了它的源码之后,再通过示例来掌握如何使用它。

ByteArrayOutputStream 介绍

ByteArrayOutputStream 是字节数组输出流。它继承于OutputStream。

ByteArrayOutputStream 中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。

 

OutputStream 函数列表

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

// 构造函数
OutputStream()
     
         void    close()
         void    flush()
         void    write(byte[] buffer, int offset, int count)
         void    write(byte[] buffer)
abstract void    write(int oneByte)

ByteArrayOutputStream 函数列表

// 构造函数
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)

OutputStream和ByteArrayOutputStream源码分析

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

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

package java.io;
     
public abstract class OutputStream implements Closeable, Flushable {
    // 将字节b写入到“输出流”中。
    // 它在子类中实现!
    public abstract void write(int b) throws IOException;
     
    // 写入字节数组b到“字节数组输出流”中。
    public void write(byte b[]) throws IOException {
        write(b, 0, b.length);
    }
     
    // 写入字节数组b到“字节数组输出流”中,并且off是“数组b的起始位置”,len是写入的长度
    public void write(byte b[], int off, int len) throws IOException {
        if (b == null) {
            throw new NullPointerException();
        } else if ((off < 0) || (off > b.length) || (len < 0) ||
                   ((off + len) > b.length) || ((off + len) < 0)) {
            throw new IndexOutOfBoundsException();
        } else if (len == 0) {
            return;
        }
        for (int i = 0 ; i < len ; i++) {
            write(b[off + i]);
        }
    }
     
    public void flush() throws IOException {
    }
     
    public void close() throws IOException {
    }
}

Tags:
相关文章列表: