模块  java.desktop
软件包  javax.imageio.stream

Interface ImageInputStream

    • 方法摘要

      所有方法  实例方法 抽象方法 
      变量和类型 方法 描述
      void close()
      关闭流。
      void flush()
      丢弃当前流位置之前的流的初始位置。
      void flushBefore​(long pos)
      丢弃指定位置之前的流的初始部分。
      int getBitOffset()
      返回当前位偏移量,为0到7之间的整数,包括0和7。
      ByteOrder getByteOrder()
      返回将从此流中读取数据值的字节顺序,作为 java.nio.ByteOrder枚举的实例。
      long getFlushedPosition()
      返回可以执行搜索的流中最早的位置。
      long getStreamPosition()
      返回流的当前字节位置。
      boolean isCached()
      如果此 ImageInputStream缓存数据本身以允许向后 true则返回 true
      boolean isCachedFile()
      如果此 ImageInputStream缓存数据本身以允许向后搜索,则返回 true ,并且缓存保存在临时文件中。
      boolean isCachedMemory()
      如果此 ImageInputStream缓存数据本身以允许向后搜索,则返回 true ,并且缓存保存在主存储器中。
      long length()
      如果已知,则返回流的总长度。
      void mark()
      通过后续调用 reset标记要返回的流中的位置。
      int read()
      从流中读取单个字节并将其作为0到255之间的整数返回。
      int read​(byte[] b)
      从流中读取最多 b.length个字节,并将它们存储在从索引0开始的 b
      int read​(byte[] b, int off, int len)
      读取到 len从流字节,并将其存储到 b开始于索引 off
      int readBit()
      从流中读取一个位并将其作为 int返回,值为 01
      long readBits​(int numBits)
      从流中读取一个位串并将其作为 long返回,第一位读取成为输出的最高位。
      boolean readBoolean()
      从该流读取一个字节,并返回一个 boolean的值 true如果是非零, false ,如果它是零。
      byte readByte()
      从流中读取一个字节并将其作为 byte值返回。
      void readBytes​(IIOByteBuffer buf, int len)
      从流中读取最多 len个字节,并修改提供的 IIOByteBuffer以指示可以找到数据的字节数组,偏移量和长度。
      char readChar()
      等效于 readUnsignedShort ,但使用 char数据类型返回结果除外。
      double readDouble()
      从流中读取8个字节,并(概念上)根据当前字节顺序连接它们,并将结果返回为 double
      float readFloat()
      从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果返回为 float
      void readFully​(byte[] b)
      读取 b.length从流字节,并将其存储到 b开始于索引 0
      void readFully​(byte[] b, int off, int len)
      读取 len从流字节,并将其存储到 b开始于索引 off
      void readFully​(char[] c, int off, int len)
      读取 len从根据当前字节顺序的流字符(无符号的16位整数),并将其存储到 c开始于索引 off
      void readFully​(double[] d, int off, int len)
      读取 len根据当前字节顺序从流双打(64位IEEE双精度浮点值),并且将它们存储到 d开始于索引 off
      void readFully​(float[] f, int off, int len)
      读取 len根据当前字节顺序从流浮标(32位IEEE单精度浮点值),并且将它们存储到 f开始于索引 off
      void readFully​(int[] i, int off, int len)
      读取 len从根据当前字节顺序的流整数(带符号的32位整数),并将其存储到 i开始于索引 off
      void readFully​(long[] l, int off, int len)
      读取 len从根据当前字节顺序的流long(有符号的64位整数),并将其存储到 l开始于索引 off
      void readFully​(short[] s, int off, int len)
      读取 len从根据当前字节顺序的流短裤(带符号的16位整数),并将其存储到 s开始于索引 off
      int readInt()
      从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果返回为 int
      String readLine()
      从输入流中读取下一行文本。
      long readLong()
      从流中读取8个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为 long返回。
      short readShort()
      从流中读取两个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为 short值返回。
      int readUnsignedByte()
      从流中读取一个字节,并(概念上)将其转换为int,使用 0xff对其进行 0xff ,以便剥离任何符号扩展位,并将其作为 byte值返回。
      long readUnsignedInt()
      从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,将结果转换为long,用 0xffffffffL对其进行 0xffffffffL ,以便剥离任何符号扩展位,并将结果作为无符号返回 long值。
      int readUnsignedShort()
      从流中读取两个字节,并且(概念上)根据当前字节顺序连接它们,将结果值转换为 int ,用 0xffff屏蔽它以剥离任何符号扩展名但是,并将结果作为unsigned返回价值 int
      String readUTF()
      读入使用 modified UTF-8格式编码的字符串。
      void reset()
      在最近一次对 mark不匹配调用时,返回指向其先前位置的流指针,包括位偏移量。
      void seek​(long pos)
      将当前流位置设置为所需位置。
      void setBitOffset​(int bitOffset)
      将位偏移设置为0到7之间的整数,包括0和7。
      void setByteOrder​(ByteOrder byteOrder)
      为将来从此流中读取数据值设置所需的字节顺序。
      int skipBytes​(int n)
      将流位置向前移动给定的字节数。
      long skipBytes​(long n)
      将流位置向前移动给定的字节数。
    • 方法详细信息

      • setByteOrder

        void setByteOrder​(ByteOrder byteOrder)
        为将来从此流中读取数据值设置所需的字节顺序。 例如,如果读取为4字节整数,则字节序列'0x01 0x02 0x03 0x04'将使用网络字节顺序具有值“0x01020304”,并且在反向字节顺序下具有值“0x04030201”。

        枚举类java.nio.ByteOrder用于指定字节顺序。 ByteOrder.BIG_ENDIAN指定所谓的big-endian或网络字节顺序,其中高位字节首先出现。 Motorola和Sparc处理器以此格式存储数据,而Intel处理器以反向存储数据ByteOrder.LITTLE_ENDIAN

        字节顺序对readBits方法返回的结果(或ImageOutputStream.writeBits写入的值)没有影响。

        参数
        byteOrder -之一 ByteOrder.BIG_ENDIANjava.nio.ByteOrder.LITTLE_ENDIAN ,指示网络字节顺序或它的反向是否将用于将来的读取。
        另请参见:
        ByteOrdergetByteOrder()readBits(int)
      • getByteOrder

        ByteOrder getByteOrder()
        返回将从此流中读取数据值的字节顺序,作为 java.nio.ByteOrder枚举的实例。
        结果
        ByteOrder.BIG_ENDIANByteOrder.LITTLE_ENDIAN ,指示正在使用的字节顺序。
        另请参见:
        ByteOrdersetByteOrder(java.nio.ByteOrder)
      • read

        int read()
          throws IOException
        从流中读取单个字节并将其作为0到255之间的整数返回。如果到达流的末尾,则返回-1。

        在读取发生之前,流中的位偏移被重置为零。

        结果
        来自流的字节值,作为int,或-1表示EOF。
        异常
        IOException - 如果发生I / O错误。
      • read

        int read​(byte[] b)
          throws IOException
        从流中读取最多b.length个字节,并从索引0开始将它们存储到b 。返回读取的字节数。 如果由于已到达流的末尾而无法读取字节,则返回-1。

        在读取发生之前,流中的位偏移被重置为零。

        参数
        b - 要写入的字节数组。
        结果
        实际读取的字节数,或 -1表示EOF。
        异常
        NullPointerException - 如果 bnull
        IOException - 如果发生I / O错误。
      • read

        int read​(byte[] b,
                 int off,
                 int len)
          throws IOException
        从流中读取最多len个字节,并将它们存储在b从索引offb开始。 返回读取的字节数。 如果由于已到达流的末尾而无法读取任何字节,则返回-1

        在读取发生之前,流中的位偏移被重置为零。

        参数
        b - 要写入的字节数组。
        off - 要写入的 b内的起始位置。
        len - 要读取的最大数量 byte s。
        结果
        实际读取的字节数,或 -1表示EOF。
        异常
        NullPointerException - 如果 bnull
        IndexOutOfBoundsException - 如果 off为负数,则 len为负数,或 off + len为大于 b.length
        IOException - 如果发生I / O错误。
      • readBytes

        void readBytes​(IIOByteBuffer buf,
                       int len)
                throws IOException
        从流中读取最多len个字节,并修改提供的IIOByteBuffer以指示可以找到数据的字节数组,偏移量和长度。 调用者不应尝试修改IIOByteBuffer的数据。

        在读取发生之前,流中的位偏移被重置为零。

        参数
        buf - 要修改的IIOByteBuffer对象。
        len - 要读取的最大数量为 byte s。
        异常
        IndexOutOfBoundsException - 如果 len为负数。
        NullPointerException - 如果 bufnull
        IOException - 如果发生I / O错误。
      • readBoolean

        boolean readBoolean()
                     throws IOException
        从该流读取一个字节,并返回一个boolean的值true如果是非零, false ,如果它是零。

        在读取发生之前,流中的位偏移被重置为零。

        Specified by:
        readBoolean在接口 DataInput
        结果
        来自流的布尔值。
        异常
        EOFException - 如果到达流的末尾。
        IOException - 如果发生I / O错误。
      • readByte

        byte readByte()
               throws IOException
        从流中读取一个字节并将其作为byte值返回。 0x000x7f之间的字节值表示0127之间的整数值。 0x800xff之间的值表示从-128/1

        在读取发生之前,流中的位偏移被重置为零。

        Specified by:
        readByte在界面 DataInput
        结果
        来自流的带符号字节值。
        异常
        EOFException - 如果到达流的末尾。
        IOException - 如果发生I / O错误。
      • readUnsignedByte

        int readUnsignedByte()
                      throws IOException
        从流中读取一个字节,并(概念上)将其转换为int,使用0xff对其进行0xff ,以便剥离任何符号扩展位,并将其作为byte值返回。

        因此, 0x000x7f之间的字节值仅作为0127之间的整数值返回。 0x800xff之间的值(通常表示负byte值)将映射到128255之间的正整数。

        在读取发生之前,流中的位偏移被重置为零。

        Specified by:
        readUnsignedByte在接口 DataInput
        结果
        来自流的无符号字节值。
        异常
        EOFException - 如果到达流的末尾。
        IOException - 如果发生I / O错误。
      • readShort

        short readShort()
                 throws IOException
        从流中读取两个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为short值返回。

        在读取发生之前,流中的位偏移被重置为零。

        Specified by:
        readShort在接口 DataInput
        结果
        来自流的签名短值。
        异常
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
        另请参见:
        getByteOrder()
      • readUnsignedShort

        int readUnsignedShort()
                       throws IOException
        从流中读取两个字节,并(概念上)根据当前字节顺序连接它们,将结果值转换为int ,用0xffff屏蔽它以剥离任何符号扩展名但是,并将结果作为无符号返回价值int

        在读取发生之前,流中的位偏移被重置为零。

        Specified by:
        readUnsignedShort接口 DataInput
        结果
        来自流的unsigned short值,作为int。
        异常
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
        另请参见:
        getByteOrder()
      • readChar

        char readChar()
               throws IOException
        等效于readUnsignedShort ,但使用char数据类型返回结果除外。

        在读取发生之前,流中的位偏移被重置为零。

        Specified by:
        readChar接口 DataInput
        结果
        流中的unsigned char值。
        异常
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
        另请参见:
        readUnsignedShort()
      • readInt

        int readInt()
             throws IOException
        从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为int返回。

        忽略流中的位偏移并将其视为零。

        Specified by:
        readInt在接口 DataInput
        结果
        来自流的signed int值。
        异常
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
        另请参见:
        getByteOrder()
      • readUnsignedInt

        long readUnsignedInt()
                      throws IOException
        从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,将结果转换为long,用0xffffffffL屏蔽它以0xffffffffL任何符号扩展位,并将结果作为无符号返回long值。

        在读取发生之前,流中的位偏移被重置为零。

        结果
        来自流的unsigned int值,为long。
        异常
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
        另请参见:
        getByteOrder()
      • readLong

        long readLong()
               throws IOException
        从流中读取8个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为long返回。

        在读取发生之前,流中的位偏移被重置为零。

        Specified by:
        readLong接口 DataInput
        结果
        来自流的已签名长值。
        异常
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
        另请参见:
        getByteOrder()
      • readFloat

        float readFloat()
                 throws IOException
        从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为float返回。

        在读取发生之前,流中的位偏移被重置为零。

        Specified by:
        readFloat接口 DataInput
        结果
        来自流的浮点值。
        异常
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
        另请参见:
        getByteOrder()
      • readDouble

        double readDouble()
                   throws IOException
        从流中读取8个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为double返回。

        在读取发生之前,流中的位偏移被重置为零。

        Specified by:
        readDouble接口 DataInput
        结果
        来自流的double值。
        异常
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
        另请参见:
        getByteOrder()
      • readLine

        String readLine()
                 throws IOException
        从输入流中读取下一行文本。 它读取连续的字节,将每个字节分别转换为字符,直到它遇到行终止符或文件结尾; 读取的字符然后返回为String 请注意,因为此方法处理字节,所以它不支持完整Unicode字符集的输入。

        如果在读取一个字节之前遇到文件结尾,则返回null 否则,通过零扩展将读取的每个字节转换为类型char 如果遇到字符'\n' ,则将其丢弃并停止读取。 如果遇到字符'\r' ,它将被丢弃,如果后面的字节转换为字符'\n' ,那么它也会被丢弃; 阅读然后停止。 如果遇到任何字符'\n''\r'之前遇到文件结尾,则读取停止。 一旦读取停止,将返回String ,其中包含按顺序读取但未丢弃的所有字符。 请注意,此字符串中的每个字符的值都小于\u0100 ,即(char)256

        在读取发生之前,流中的位偏移被重置为零。

        Specified by:
        readLine在接口 DataInput
        结果
        包含流中文本行的String。
        异常
        IOException - 如果发生I / O错误。
      • readUTF

        String readUTF()
                throws IOException
        读入使用modified UTF-8格式编码的字符串。 readUTF的一般合同是它读取以修改的UTF-8格式编码的Unicode字符串的表示; 然后将此字符串作为String返回。

        首先,读取两个字节,并使用网络字节顺序(无论当前字节顺序设置如何)以readUnsignedShort方法的方式构造无符号16位整数。 此整数值称为UTF长度,并指定要读取的其他字节数。 然后通过将它们分组考虑将这些字节转换为字符。 每组的长度根据组的第一个字节的值计算。 组之后的字节(如果有)是下一组的第一个字节。

        如果组的第一个字节与位模式0xxxxxxx (其中x表示“可能是01 ”) 1 ,则该组仅包含该字节。 该字节被零扩展以形成一个字符。

        如果组的第一个字节与位模式110xxxxx匹配,则该组由该字节a和第二个字节b 如果没有字节b (因为字节a是要读取的最后一个字节),或者如果字节b与位模式10xxxxxx不匹配,则抛出UTFDataFormatException 否则,该组将转换为字符:

           (char)(((a& 0x1F) << 6) | (b & 0x3F))  
        如果组的第一个字节与位模式1110xxxx匹配,则该组由该字节a和另外两个字节bc 如果没有字节c (因为字节a是要读取的最后两个字节之一),或者字节b或字节c与位模式10xxxxxx不匹配,则抛出UTFDataFormatException 否则,该组将转换为字符:
           (char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))  
        如果组的第一个字节与模式1111xxxx或模式10xxxxxx ,则抛出UTFDataFormatException

        如果在整个过程中的任何时候遇到文件结尾,则抛出java.io.EOFException

        通过此过程将每个组转换为字符后,将按照从输入流中读取相应组的顺序收集字符,以形成返回的String

        忽略当前字节顺序设置。

        在读取发生之前,流中的位偏移被重置为零。

        注意:此方法不应用于使用标准UTF-8的图像格式的实现,因为此处使用的修改后的UTF-8与标准UTF-8不兼容。

        Specified by:
        readUTF在接口 DataInput
        结果
        从流中读取的字符串。
        异常
        EOFException - 如果此流在读取所有字节之前到达结尾。
        UTFDataFormatException - 如果字节不表示字符串的有效修改的UTF-8编码。
        IOException - 如果发生I / O错误。
      • readFully

        void readFully​(byte[] b,
                       int off,
                       int len)
                throws IOException
        读取len从流字节,并将其存储到b开始于索引off 如果到达流的末尾,将抛出java.io.EOFException

        在读取发生之前,流中的位偏移被重置为零。

        Specified by:
        readFully在接口 DataInput
        参数
        b - 要写入的字节数组。
        off - 写入的位置在 b内。
        len - 要读取的最大数量为 byte s。
        异常
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 off + len为大于 b.length
        NullPointerException - 如果 bnull
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
      • readFully

        void readFully​(byte[] b)
                throws IOException
        读取b.length从流字节,并将其存储到b开始于索引0 如果到达流的末尾,则将抛出java.io.EOFException

        在读取发生之前,流中的位偏移被重置为零。

        Specified by:
        readFully在界面 DataInput
        参数
        b - 数组 byte s。
        异常
        NullPointerException - 如果 bnull
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
      • readFully

        void readFully​(short[] s,
                       int off,
                       int len)
                throws IOException
        根据当前字节顺序从流中读取len短路(带符号的16位整数),并将它们存储在s从索引offs开始。 如果到达流的末尾,则将抛出java.io.EOFException

        在读取发生之前,流中的位偏移被重置为零。

        参数
        s - 要写入的短裤数组。
        off -内的起始位置 s写入。
        len - 要读取的最大数量为 short s。
        异常
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 off + len为大于 s.length
        NullPointerException - 如果 snull
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
      • readFully

        void readFully​(char[] c,
                       int off,
                       int len)
                throws IOException
        读取len从根据当前字节顺序的流字符(无符号的16位整数),并将其存储到c开始于索引off 如果到达流的末尾,将抛出java.io.EOFException

        在读取发生之前,流中的位偏移被重置为零。

        参数
        c - 要写入的字符数组。
        off - 写入的 c内的起始位置。
        len - 要读取的最大数量 char
        异常
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 off + len为大于 c.length
        NullPointerException - 如果 cnull
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
      • readFully

        void readFully​(int[] i,
                       int off,
                       int len)
                throws IOException
        读取len从根据当前字节顺序的流整数(带符号的32位整数),并将其存储到i开始于索引off 如果到达流的末尾,则将抛出java.io.EOFException

        在读取发生之前,流中的位偏移被重置为零。

        参数
        i - 要写入的int数组。
        off - 写入的 i内的起始位置。
        len - 要读取的最大数量 int s。
        异常
        IndexOutOfBoundsException - 如果 off为负数,则 len为负数,或 off + len为大于 i.length
        NullPointerException - 如果 inull
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
      • readFully

        void readFully​(long[] l,
                       int off,
                       int len)
                throws IOException
        读取len从根据当前字节顺序的流long(有符号的64位整数),并将其存储到l开始于索引off 如果到达流的末尾,则将抛出java.io.EOFException

        在读取发生之前,流中的位偏移被重置为零。

        参数
        l - 要写入的long数组。
        off - 写入的 l内的起始位置。
        len - 要读取的最大数量 long s。
        异常
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 off + len为大于 l.length
        NullPointerException - 如果 lnull
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
      • readFully

        void readFully​(float[] f,
                       int off,
                       int len)
                throws IOException
        读取len根据当前字节顺序从流浮标(32位IEEE单精度浮点值),并且将它们存储到f开始于索引off 如果到达流的末尾,则将抛出java.io.EOFException

        在读取发生之前,流中的位偏移被重置为零。

        参数
        f - 要写入的浮点数组。
        off - 写入的 f内的起始位置。
        len - 要读取的最大数量 float s。
        异常
        IndexOutOfBoundsException - 如果 off为负数,则 len为负数,或 off + len为大于 f.length
        NullPointerException - 如果 fnull
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
      • readFully

        void readFully​(double[] d,
                       int off,
                       int len)
                throws IOException
        根据当前字节顺序从流中读取len双精度(64位IEEE双精度浮点数),并将它们存储在d从索引off d开始。 如果到达流的末尾,则将抛出java.io.EOFException

        在读取发生之前,流中的位偏移被重置为零。

        参数
        d - 要写入的双精度数组。
        off - 写入内容的 d内的起始位置。
        len - 要读取的最大数量 double s。
        异常
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 off + len为大于 d.length
        NullPointerException - 如果 dnull
        EOFException - 如果流在读取所有字节之前到达结尾。
        IOException - 如果发生I / O错误。
      • getStreamPosition

        long getStreamPosition()
                        throws IOException
        返回流的当前字节位置。 下一次读取将从此偏移量开始。
        结果
        一个长的包含流的位置。
        异常
        IOException - 如果发生I / O错误。
      • getBitOffset

        int getBitOffset()
                  throws IOException
        返回当前位偏移量,为0到7之间的整数,包括0和7。 通过调用readBits方法隐式更新位偏移。 值0表示最高有效位,值7表示正在读取的字节的最低有效位。

        位偏移量被设置为0时,流被第一次打开,并且通过调用复位为0至seekskipBytes ,或任何readreadFully方法。

        结果
        包含0到7之间的位偏移的 int
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        setBitOffset(int)
      • setBitOffset

        void setBitOffset​(int bitOffset)
                   throws IOException
        将位偏移设置为0到7之间的整数,包括0和7。 流中的字节偏移量(由getStreamPosition返回)保持不变。 值0表示最高有效位,值7表示正在读取的字节的最低有效位。
        参数
        bitOffset - 所需的偏移量,为0到7之间的 int (含)。
        异常
        IllegalArgumentException - 如果 bitOffset不在0和7之间(包括0和7)。
        IOException - 如果发生I / O错误。
        另请参见:
        getBitOffset()
      • readBit

        int readBit()
             throws IOException
        从流中读取一个位并将其作为int返回,值为01 位偏移增加1并减少模8。
        结果
        一个 int包含值 01
        异常
        EOFException - 如果流在读取所有位之前到达结尾。
        IOException - 如果发生I / O错误。
      • readBits

        long readBits​(int numBits)
               throws IOException
        从流中读取一个位串并将其作为long返回,第一位读取成为输出的最高位。 读取在getStreamPosition指示的字节内开始,位于getBitOffset给出的位。 位偏移量提前numBits ,模数降低8。

        流的字节顺序对此方法没有影响。 这个方法的返回值被构造成好像每次读取一个位,并转移到返回值的右侧,如下面的伪代码所示:

           long accum = 0L; for (int i = 0; i < numBits; i++) { accum <<= 1; // Shift left one bit to make room accum |= readBit(); }  
        需要注意的是的结果readBits(32)因此可以不等于的readInt() ,如果正在使用的反向网络字节顺序(即, getByteOrder() == false )。

        如果在读取所有位之前遇到流的末尾,则抛出java.io.EOFException

        参数
        numBits - 要读取的位数,如0到64之间的 int (含)。
        结果
        bitstring,作为 long ,最后一位读取存储在最低有效位中。
        异常
        IllegalArgumentException - 如果 numBits不在0到64之间(包括0和64)。
        EOFException - 如果流在读取所有位之前到达结尾。
        IOException - 如果发生I / O错误。
      • length

        long length()
             throws IOException
        如果已知,则返回流的总长度。 否则,返回-1
        结果
        a long包含流的长度(如果已知),否则为 -1
        异常
        IOException - 如果发生I / O错误。
      • skipBytes

        int skipBytes​(int n)
               throws IOException
        将流位置向前移动给定的字节数。 该方法可能仅能够以比请求的更少的字节数向前跳过,例如,如果到达流的末尾。 在所有情况下,都会返回跳过的实际字节数。 在前进位置之前将位偏移设置为零。
        Specified by:
        skipBytes在接口 DataInput
        参数
        n - 包含要跳过的字节数的 int
        结果
        表示跳过的字节数的 int
        异常
        IOException - 如果发生I / O错误。
      • skipBytes

        long skipBytes​(long n)
                throws IOException
        将流位置向前移动给定的字节数。 此方法与skipBytes(int)相同,只是它允许更大的跳过距离。
        参数
        n - 包含要跳过的字节数的 long
        结果
        表示跳过的字节数的 long
        异常
        IOException - 如果发生I / O错误。
      • seek

        void seek​(long pos)
           throws IOException
        将当前流位置设置为所需位置。 下一次读取将在此位置进行。 位偏移设置为0。

        一个IndexOutOfBoundsException如果将被抛出pos比冲洗位置(如通过返回较小getflushedPosition )。

        寻找文件末尾是合法的; 只有在执行读操作时才会抛出java.io.EOFException

        参数
        pos - 包含所需文件指针位置的 long
        异常
        IndexOutOfBoundsException - 如果 pos小于刷新位置。
        IOException - 如果发生任何其他I / O错误。
      • mark

        void mark()
        通过后续调用reset标记要返回的流中的位置。 与标准InputStream不同,所有ImageInputStream支持标记。 另外,对markreset调用可以任意嵌套。

        ReaderInputStream接口声明的mark方法不同,不使用readLimit参数。 调用mark可以读取任意数量的数据。

        readBits方法使用的位位置由每对markreset的调用保存和恢复。

        请注意,对于ImageReaderflushBefore作为读操作的一部分调用flushBefore是有效的。 因此,如果一个应用程序调用mark传递一个流的前ImageReader ,应用程序不应该假定标记位置将保持有效的读操作完成后。

      • reset

        void reset()
            throws IOException
        在最近一次对mark不匹配调用时,返回指向其先前位置的流指针,包括位偏移量。

        reset没有对reset的相应调用, mark拨打mark无效。

        如果先前标记的位置位于流的丢弃部分中,则将抛出IOException

        异常
        IOException - 如果发生I / O错误。
      • flushBefore

        void flushBefore​(long pos)
                  throws IOException
        丢弃指定位置之前的流的初始部分。 试图在流的刷新部分内寻找偏移将导致IndexOutOfBoundsException

        调用flushBefore可能允许实现此接口的类释放资源,例如用于存储流中数据的内存或磁盘空间。

        参数
        pos - 包含可以刷新的流前缀长度的 long
        异常
        IndexOutOfBoundsException - 如果 pos位于流的刷新部分或超过当前流位置。
        IOException - 如果发生I / O错误。
      • flush

        void flush()
            throws IOException
        丢弃当前流位置之前的流的初始位置。 相当于flushBefore(getStreamPosition())
        异常
        IOException - 如果发生I / O错误。
      • getFlushedPosition

        long getFlushedPosition()
        返回可以执行搜索的流中最早的位置。 返回的值将是传递给之前调用flushBefore的所有值的最大值。
        结果
        寻求最早的法律地位,如 long
      • isCached

        boolean isCached()
        如果此ImageInputStream缓存数据本身以允许向后true则返回true 应用程序可以参考此信息,以确定刷新的频率或是否以节省缓存资源。
        结果
        true如果这个 ImageInputStream缓存数据。
        另请参见:
        isCachedMemory()isCachedFile()
      • isCachedMemory

        boolean isCachedMemory()
        如果此ImageInputStream缓存数据本身以允许向后搜索,则返回true ,并且缓存保存在主内存中。 应用程序可以参考此信息,以确定刷新的频率或是否以节省缓存资源。
        结果
        true如果此 ImageInputStream数据缓存在主内存中。
        另请参见:
        isCached()isCachedFile()
      • isCachedFile

        boolean isCachedFile()
        如果此ImageInputStream缓存数据本身以允许向后搜索,则返回true ,并且缓存保存在临时文件中。 应用程序可以参考此信息,以确定刷新的频率或是否以节省缓存资源。
        结果
        true如果此 ImageInputStream数据缓存在临时文件中。
        另请参见:
        isCached()isCachedMemory()
      • close

        void close()
            throws IOException
        关闭流。 尝试访问已关闭的流可能会导致IOException或行为不正确。 调用此方法可能允许实现此接口的类释放与流关联的资源,如内存,磁盘空间或文件描述符。
        Specified by:
        close在接口 AutoCloseable
        Specified by:
        close接口 Closeable
        异常
        IOException - 如果发生I / O错误。