• 相关软件
    >BufferedInputStream 创建者:webmaster 更新时间:2005-12-17 04:12


    该类实现一个缓冲的输入流。通过设置这样的输入流, 一个应用
    不必为每个读取的字节调用基本系统就能将字节读入字节流中。数据以分块形式读入缓冲区;顺序读取能直接存取缓冲区中的数据。




    类 java.io.BufferedInputStream



    java.lang.Object
      |
      +----java.io.InputStream
          |
          +----java.io.FilterInputStream
                |
                +----java.io.BufferedInputStream




    public class BufferedInputStream
    extends FilterInputStream





    变量索引



    buf
    数据存储的缓冲区。
    count
    比缓冲区中最后一个有效字节的下标大一的下标。
    marklimit
    顺序调用 reset 方法失败前,调用 mark
    方法之后所允许的最大读取数。
    markpos
    上次调用 mark方法时 pos 域的值。
    pos
    缓冲区中当前位置。



    构造子索引



    BufferedInputStream(InputStream)
    创建一个新的缓冲输入流以便从指定输入流中以缺省 512 字节缓冲区尺寸来读取数据。
    BufferedInputStream(InputStream, int)
    创建一个新的缓冲输入流以便从指定输入流中以指定缓冲区尺寸读取数据。



    方法索引



    available()
    返回能从该未分块输入流中读取的字节数。
    mark(int)
    在该输入流中标记当前位置。
    markSupported()
    测试该输入流是否支持markreset方法。
    read()
    从缓冲输入流中读取下一个数据字节。
    read(byte[], int, int)
    将字符读入一个数组的某部分中。
    reset()
    将该输入流重新定位到该输入流上mark方法上次调用的位置。
    skip(long)
    跳过并删除输入流的 n 字节数据。




    变量



    buf

    protected byte buf[]


    数据存储的缓冲区。




    count

    protected int count


    比缓冲区中最后一个有效字节的下标大一的下标。




    pos

    protected int pos


    缓冲区中当前位置。这是从 buf 数组中读取的下一个字符的下标。



     
    参见:
     
    buf



    markpos

    protected int markpos


    上次调用mark方法时的 pos 域值。若无当前标记,则该域值为 -1



     
    参见:
     
    mark, pos



    marklimit

    protected int marklimit


    顺序调用reset失败前,调用mark方法之后允许的最大读取数。



     
    参见:
     
    mark, reset





    构造子




    BufferedInputStream

    public BufferedInputStream(InputStream in)


    创建一个新的缓冲输入流以便从指定输入流中以缺省 512 字节来读取数据。



     
    参数:
     
    in - 基本的输入缓存。



    BufferedInputStream

    public BufferedInputStream(InputStream in,
            int size)


    创建一个新的缓冲输入流以便从指定输入流中以指定缓冲区尺寸读取数据。



     
    参数:
     
    in - 基本的输入缓存。
     
    size - 缓冲区尺寸。





    方法



    read

    public synchronized int read() throws IOException


    从该缓冲输入流中读取下一个数据字节。返回的字节值是
    0255 范围内的一个 int 数。如果已读到流尾,无可读的字节时,返回 -1。禁用该方法,除非输入数据可用,检测出数据流终止或抛出异常。


    若缓冲区不为空,则 BufferedInputStream方法返回其缓冲区的下一个数据字节。否则, 若基本流未返回流终止指示符,则用基本输入流重新填充缓冲流并返回下一个字符。



     
    返回值:
     
    数据的下一个字节,若已读到流尾则为 -1
     
    抛出:
    OException
     
    如果发生某个 I/O 错误。
     
    覆盖:
     

    FilterInputStream
    中的 read
    参见:
     
    in



    read

    public synchronized int read(byte b[],
                int off,
              int len) throws IOException


    将字符读入一个数组的某部分中。阻塞该方法直到某些输入数据可用、发生 I/O 错误或到达流尾为止。

    若该流的缓冲区不为空,则将字节从中复制到参数数组,否则,
    用基本输入流重新填充该缓冲区并 (除非数据流返回流尾指示符) 用新填充的缓冲区字符来填充数组参数。


    作为一种优化, 若缓冲区为空、标志不有效且 len
    至少与缓冲区一样大, 则该方法将直接从基本流中读取数据到给定数组中。因此冗余的 BufferedInputStream
    不能复制不必要的数据。



     
    参数:
     
    b - 目标缓冲区。
     
    off - 开始存储字节的偏移量。
     
    len - 读取字节的最大数。
     
    返回值:
     
    读取字节数, 若已达到流尾,则为 -1。  
    抛出:
    OException
     
    如果发生某个 I/O 错误。
     
    覆盖:
     
    类 FilterInputStream
    中的 read



    skip

    public synchronized long skip(long n) throws IOException


    跳过并删除输入流的 n 字节数据。skip
    方法因各种原因可终止跳过一些较小的字节数,可能是零。跳过的实际字节数被返回。


    BufferedInputStream skip 方法比较其缓冲区中可用字节数,k, 其中 k =
    count - pos,
    n 递增。若 n ≤ k,
    pos 域以 n递增。否则,递增 pos 域来获得值
    count,并通过调用基本输入流上的
    skip 方法并提供参数
    n - k 来跳过剩余字节。



     
    参数:
     
    n - 跳过的字节数。
     
    返回值:
     
    实际跳过的字节数。
     
    抛出:
    OException
     
    如果发生某个 I/O 错误。
     
    覆盖:
     
    类 FilterInputStream
    中的 skip



    available

    public synchronized int available() throws IOException


    返回能从该未分块输入流中读取的字节数。


    BufferedInputStreamavailable
    方法返回缓冲区中剩余的字节总数 (count - pos) 和调用基本输入流的可用的方法的结果。



     
    返回值:
     
    从当前输入流中可无阻塞读取的字节数。
     
    抛出:
    OException
     
    如果发生某个 I/O 错误。
     
    覆盖:
     
    类 FilterInputStream
    中的 available
    参见:
     
    in



    mark

    public synchronized void mark(int readlimit)


    在该输入流中标记当前位置。后续调用 reset 方法重新将流定位于最后的标记位置,从而后续读取能读取相同字节。


    readlimit 参数提供输入流在标记位置变为非法前所允许读取多个字节数。



     
    参数:
     
    readlimit - 标记位置变为无效前能读取的最大字节数。  
    覆盖:

    类 FilterInputStream
    中的 mark
    参见:
     
    reset



    reset

    public synchronized void reset() throws IOException


    将该输入流重新定位到该输入流的mark方法上次调用时的位置。


    若流仍未标记或标记非法,则抛出一个 IOException 。读取前需要浏览一下流内容时,才使用流标记。调用通用的语法分析器将很容易做到这一点。若流是语法分析器所处理的类型,则继续前进。若流不是该类型,失败时语法分析器将抛出异常。若在 readlimit 字节内抛出异常,
    则语法分析器允许外部编码重置该流并使用另一语法分析器。



     
    抛出:
    OException
     
    若该流仍未标记或标记已是非法的。  
    覆盖:
    类 FilterInputStream
    中的 reset
    参见:
     
    mark



    markSupported

    public boolean markSupported()


    测试该输入流是否支持markreset方法。BufferedInputStreammarkSupported
    方法返回 true



     
    返回值:
     
    boolean,它指示该流类型是否支持mark
    reset 方法。
     
    覆盖:
    类 FilterInputStream 中的
    markSupported
    参见:
     
    mark, reset

    相关文章
    本页查看次数: