A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

OutputStream是抽象类。这个抽象类是所有表示字节输出流的类的父类。输出流接受输出字节并将这些字节发送到某个“池”。继承这个抽象类的类必须提供至少一种可写入一个输出字节的方法。定义如下:

public abstract class OutputStream implements Closeable, Flushable

OutputStream实现了Flushable接口。Flushable是可刷新数据的目标地,其中声明了flush方法。flush方法通过将所有已缓冲输出写入底层流来刷新此流。

方法
方法
说明

public abstract void write(int b) throws IOException;
将指定的字节写入此输出流。

public void write(byte b[]) throws IOException {…}
将b.length个字节从指定的byte数组写入此输出流。

public void write(byte b[], int off, int len) throws IOException {…}
将指定byte数组中从偏移量off开始的len个字节写入此输出流。

public void flush() throws IOException {}
刷新此输出流并强制写出所有缓冲的输出字节。

public void close() throws IOException {}
关闭此输出流并释放与此流有关的所有系统资源。
write( int b)/** * 将指定字节写入此输出流。  * write方法的常规协定是:向输出流写入一个字节。要写入的字节是参数b 的八个低位。b的24个高位将被忽略。 * OutputStream的子类必须提供此方法的实现。 * * @param      b   字节 * @exception  IOException  如果发生I/O错误。尤其是如果已关闭输出流。 */public abstract void write(int b) throws IOException;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
write( byte b[])/** * 将 b.length 个字节从指定的 byte 数组写入此输出流。 * write(b) 的常规协定是:应该与调用write(b, 0, b.length) 的效果完全相同。 * * @param      b   数据. * @exception  IOException  如果发生I/O错误。 * @see        java.io.OutputStream#write(byte[], int, int) */public void write(byte b[]) throws IOException {    write(b, 0, b.length);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
write( byte b[], int off, int len)/** * 将指定byte数组中从偏移量off开始的len个字节写入此输出流。 *  * write(b, off, len) 的常规协定是: * 将数组b中的某些字节按顺序写入输出流; * 元素b[off]是此操作写入的第一个字节,b[off+len-1]是此操作写入的最后一个字节。 *  * OutputStream 的write方法对每个要写出的字节调用一个参数的write 方法。 * 建议子类重写此方法并提供更有效的实现。 * * @param      b     数据。 * @param      off   数据中的初始偏移量。 * @param      len   写入的字节数。 * @exception  IOException   如果发生I/O错误。尤其是关闭了输出流。 */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;    }    // 将指定byte数组中从偏移量off开始的len个字节写入此输出流。    for (int i = 0 ; i < len ; i++) {        write(b[off + i]);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
flush()/** * 刷新此输出流并强制写出所有缓冲的输出字节。 *  * flush 的常规协定是: * 如果此输出流的实现已经缓冲了以前写入的任何字节,则调用此方法指示 * 应将这些字节立即写入它们预期的目标。 *  * 如果此流的预期目标是由基础操作系统提供的一个抽象(如一个文件), * 则刷新此流只能保证将以前写入到流的字节传递给操作系统进行写入, * 但不保证能将这些字节实际写入到物理设备(如磁盘驱动器)。 *  * OutputStream 的flush方法不执行任何操作。 * * @exception  IOException  如果发生I/O错误。 */public void flush() throws IOException {}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
close()/** * 关闭此输出流并释放与此流有关的所有系统资源。  *  * close 的常规协定是: * 该方法将关闭输出流。 * 关闭的流不能执行输出操作,也不能重新打开。 *  * OutputStream 的close方法不执行任何操作。 *  * @exception  IOException  如果发生I/O错误。 */public void close() throws IOException {}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
总结
  • 表示字节输出流的类必须提供至少一种可写入一个输出字节的方法。

对InputStream的介绍就到这里。想了解更多内容请参考

版权声明


1 个回复

倒序浏览

很不错,受教了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马