java io FilterOutputStream源码分析
程序员文章站
2022-05-09 11:02:26
目录简介全部字段和方法简介/** * 这个类是过滤输出流的所有类的超类。 * 这些流位于一个已经存在的输出流(底层输出流)之上,它使用这个输出流 * 作为它的基本数据接收器,但也可能在过程中转换数据或提供额外的功能。 *
* 类FilterOutputStream本身只是覆盖了OutputStream的所有方法,并使用将请求传递给底层输出流的版本。 * FilterOutputStream的子类可以进一步覆盖其中的一些方法,并提供额外的方法和字段。 *...
目录
简介
/**
* 这个类是过滤输出流的所有类的超类。
* 这些流位于一个已经存在的输出流(底层输出流)之上,它使用这个输出流
* 作为它的基本数据接收器,但也可能在过程中转换数据或提供额外的功能。
* <p>
* 类FilterOutputStream本身只是覆盖了OutputStream的所有方法,并使用将请求传递给底层输出流的版本。
* FilterOutputStream的子类可以进一步覆盖其中的一些方法,并提供额外的方法和字段。
*
* @author Jonathan Payne
* @since JDK1.0
*/
public
class FilterOutputStream extends OutputStream
全部字段和方法
/**
* 要过滤的底层输出流。
*/
protected OutputStream out;
/**
* 创建构建在指定的底层输出流之上的输出流筛选器。
*
* @param out the underlying output stream to be assigned to
* the field <tt>this.out</tt> for later use, or
* <code>null</code> if this instance is to be
* created without an underlying stream.
*/
public FilterOutputStream(OutputStream out) {
this.out = out;
}
/**
* Writes the specified <code>byte</code> to this output stream.
* <p>
* The <code>write</code> method of <code>FilterOutputStream</code>
* calls the <code>write</code> method of its underlying output stream,
* that is, it performs <tt>out.write(b)</tt>.
* <p>
* Implements the abstract <tt>write</tt> method of <tt>OutputStream</tt>.
*
* @param b the <code>byte</code>.
* @exception IOException if an I/O error occurs.
*/
public void write(int b) throws IOException {
out.write(b);
}
/**
* Writes <code>b.length</code> bytes to this output stream.
* <p>
* The <code>write</code> method of <code>FilterOutputStream</code>
* calls its <code>write</code> method of three arguments with the
* arguments <code>b</code>, <code>0</code>, and
* <code>b.length</code>.
* <p>
* Note that this method does not call the one-argument
* <code>write</code> method of its underlying stream with the single
* argument <code>b</code>.
*
* @param b the data to be written.
* @exception IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#write(byte[], int, int)
*/
public void write(byte b[]) throws IOException {
write(b, 0, b.length);
}
/**
* 将从指定字节数组中off开始的len字节写入此输出流。
* <p>
* FilterOutputStream的写方法调用write(int)方法进行输出。
* <p>
* 注意,此方法不使用相同的参数调用其基础输入流的write方法。
* FilterOutputStream的子类应该提供这个方法更有效的实现方式。
*
* @param b the data.
* @param off the start offset in the data.
* @param len the number of bytes to write.
* @exception IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#write(int)
*/
public void write(byte b[], int off, int len) throws IOException {
if ((off | len | (b.length - (len + off)) | (off + len)) < 0)
throw new IndexOutOfBoundsException();
for (int i = 0 ; i < len ; i++) {
write(b[off + i]);
}
}
/**
* 刷新此输出流,并强制将任何缓冲的输出字节写入流。
* <p>
* FilterOutputStream的flush方法调用其底层输出流的flush方法。
*
* @exception IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
*/
public void flush() throws IOException {
out.flush();
}
/**
* 关闭此输出流并释放与该流关联的任何系统资源。
* <p>
* FilterOutputStream的close方法调用其flush方法,然后调用其底层输出流的close方法。
*
* @exception IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#flush()
* @see java.io.FilterOutputStream#out
*/
@SuppressWarnings("try")
public void close() throws IOException {
try (OutputStream ostream = out) {
flush();
}
}
本文地址:https://blog.csdn.net/xushiyu1996818/article/details/109577452
推荐阅读
-
Java并发系列之Semaphore源码分析
-
Java并发系列之CyclicBarrier源码分析
-
Java并发系列之ConcurrentHashMap源码分析
-
Java并发系列之CountDownLatch源码分析
-
Java基础之LinkList 源码分析
-
Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析
-
[五]类加载机制双亲委派机制 底层代码实现原理 源码分析 java类加载双亲委派机制是如何实现的
-
Java并发编程中线程池源码分析及使用
-
【Java】NIO中Selector的select方法源码分析
-
别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析【JVM篇二】