目录
简介
/**
* InputStream,这个抽象类是所有代表字节输入流的类的父类。
*
* <p>需要定义InputStream的子类的程序,必须始终提供返回下一个输入字节的方法。
*
* @author Arthur van Hoff
* @see java.io.BufferedInputStream
* @see java.io.ByteArrayInputStream
* @see java.io.DataInputStream
* @see java.io.FilterInputStream
* @see java.io.InputStream#read()
* @see java.io.OutputStream
* @see java.io.PushbackInputStream
* @since JDK1.0
*/
public abstract class InputStream implements Closeable
三个read
/**
* 1个位,1bit。一个字节,8个bit,1byte,对应2^8=256。
* 读取这个输入流的下一个字节的数据。字节的值以一个int类型返回,范围从0-255之间。
* 如果到了流的结尾,从而没有字节了,返回-1.
* 这个方法会阻塞,直到输入数据可用,或者碰到流的结尾,或者抛出一个异常
*
* <p> 子类必须提供一个该方法的实现
*
* @return 下一个字节的数据,或者当遇到流的结尾,返回-1
* @exception IOException 当io异常发生时
*/
public abstract int read() throws IOException;
/**
* 从输入流中读取一定数量的字节并将其存储到缓冲区数组b中。
* 实际读取的字节数作为整数返回。此方法将一直阻塞,直到输入数据可用、检测到文件结束或抛出异常为止。
*
* <p>如果b的长度为0,则不读取字节,返回0;
* 否则,将尝试读取至少一个字节。
* 如果由于流位于文件的末尾而没有可用的字节,则返回-1值;
* 否则,至少有一个字节被读取并存储到b中。
*
* <p> 读取的第一个字节被存储到元素b[0]中,然后下一个字节存储到元素b[1]中,
* 以此类推。读取的字节数最多等于b的长度。
* 设k为实际读取的字节数;这些字节将存储在元素b[0]到b[k-1]中,元素b[k]到b[b.length-1]中,不受影响。
*
* <p>类inputstream的read(b,0, b.length)方法具有相同的效果:
*
* @param b 数据被读取后,进入的缓存
* @return 读入缓存的总字节数,或因为遇到流的结尾,没有更多数据,返回-1
* @exception IOException 如果第一个byte因为任何原因不能访问,除非遇到了文件的结尾。如果输入流已经被关闭,或者遇到了其他的io异常
* @exception Nul