编程语言的I/O类库中常使用流这个抽象概念,它代表任何有能力产出数据源对象或者是有能力接收数据的接收端对象,“流”屏蔽了实际的I/O设备中处理数据的细节。
流的方向
在Java1.0中,类库的设计者首先限定于输入有关的所有类都应该从InputStream继承,用于读取单个字节或者字节数组,而与输出有关的所有类都应该从OutputStream继承,用于写单个字节或者字节数组。read()和write()都是抽象方法,约定了子类的实现方式。
InputStream:
// 从read()返回一个字节给调用者,以int形式返回,忽略高24位
// 此方法可能阻塞直到数据可用、EOF、IOE,-1代表EOF
public abstract int read() throws IOException;
// 从read()返回字节给数组b[],从off开始最多读取len个字节
// 返回值代表实际读取字节数,-1代表EOF
public int read(byte b[], int off, int len) throws IOException
复制代码
OutputStream:
// 将字节b写到字节流,,以int形式传入,忽略高24位
public abstract void write(int b) throws IOException;
// 将字节数组b[]写到字节流,从off开始最多写len个字节
public void write(byte b[], int off, int len) throws IOException
复制代码
字节数据流程图:
喜欢就支持一下吧
相关推荐