Java8 I/O源码-InputStream

本文介绍了Java8中字节输入流的基类InputStream,包括read()、read(byte[])、skip(long)等方法,以及其作为抽象类的角色和常用操作。
摘要由CSDN通过智能技术生成

今天开始学习字节流。本文简单介绍所有字节输入流的父类InputStream。

InputStream是抽象类。这个抽象类是所有表示字节输入流的类的父类。继承这个抽象类的类必须提供返回下一个输入字节的方法。定义如下:

public abstract class InputStream implements Closeable

方法

方法 说明
public abstract int read() throws IOException; 从输入流中读取数据的下个字节。
public int read(byte b[]) throws IOException{…} 从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。
public int read(byte b[], int off, int len) throws IOException{…} 将输入流中最多len个数据字节读入byte数组。
public long skip(long n) throws IOException{…} 跳过和丢弃此输入流中数据的n个字节。
public int available() throws IOException{…} 返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。
public void close() throws IOException {} 关闭此输入流并释放与该流关联的所有系统资源。
public synchronized void mark(int readlimit) {} 在此输入流中标记当前的位置。对reset方法的后续调用会在最后标记的位置重新定位此流,以便后续读取重新读取相同的字节。
public synchronized void reset() throws IOException {…} 将此流重新定位到最后一次对此输入流调用mark方法时的位置。
public boolean markSupported() {…} 测试此输入流是否支持mark和reset方法。
read()
/**
 * 从输入流中读取数据的下个字节。读取的字节为int型,范围为0~255。
 * 如果因为到了流末尾导致没有可用的字节,返回-1。
 * 在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。
 *
 * 子类必须提供方法的实现。
 *
 * @return     如果到达流末尾,返回-1,否则返回从输入流中读取到的数据的下个字节
 * @exception  IOException  如果发生I/O错误
 */
public abstract int read() throws IOException;
read(byte b[])
/**
 * 从输入流中读取一定数量的字节并把它们保存到缓冲数组b中。返回读取的字节数。在输入数据可用、检测到文件末尾或者抛出异常前,此方法一直阻塞。
 *
 * 如果b的长度为0,不会读取字节,并返回0;否则至少会尝试读取一个字节。如果因为流在文件末尾导致没有字节可用,返回-1;否则至少读取一个字节并保存到b中。
 *
 * 将读取的第一个字节存储在b[0]中,下一个字节存储在b[1]中,依次类推。读取的字节数最多等于b的长度。设k为实际读取的字节数;这些字节将存储在 b[0]到b[k-1]的元素中,不影响b[k]到b[b.length-1]的元素。
 *
 * 类InputStream的read(b)方法的相当于:read(b, 0, b.length) 
 *
 * @param      b   存储读入数据的缓冲区。
 * @return     读入缓冲区的总字节数;如果因为已经到达流末尾而不再有数据可用,则返回-1。
 * @exception  IOException  如果不是因为流位于文件末尾而无法读取第一个字节;如果输入流已关闭;如果发生其他I/O错误。
 * @exception  NullPointerException  如果b为null
 * @see      
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值