java io InputStream源码分析

本文详细探讨了Java IO中的InputStream类,包括其基本介绍,read方法的实现,skip、available和close方法的工作原理,以及mark、reset和markSupported的功能分析。
摘要由CSDN通过智能技术生成

目录

简介

三个read

skip,available,close

mark,reset,markSupported


简介

/**
 * 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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值