Module  java.desktop
软件包  javax.imageio.stream

Interface ImageInputStream

    • 方法摘要

      所有方法  接口方法  抽象方法 
      Modifier and Type 方法 描述
      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​()
      返回 true如果这个 ImageInputStream缓存数据本身以允许向后搜索。
      boolean isCachedFile​()
      返回 true如果这个 ImageInputStream缓存数据本身以允许向后搜索,并且高速缓存保存在临时文件中。
      boolean isCachedMemory​()
      返回 true如果这个 ImageInputStream缓存数据本身以允许向后搜索,并且高速缓存保存在主内存中。
      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)
      从流读取一个bitstring,并将其作为 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​()
      从流中读取一个字节,并从概念 0xff其转换为int,用 0xff对其进行 0xff ,以剥离任何符号扩展位,并将其作为 byte返回。
      long readUnsignedInt​()
      从流读取4个字节,(在概念上)根据当前字节顺序连接它们,将结果转换为长,将其用 0xffffffffL屏蔽,以剥离任何符号扩展位,并将结果作为无符号返回 long值。
      int readUnsignedShort​()
      从流中读取两个字节,并且(在概念上)根据当前字节顺序连接它们,将结果值转换为 int ,用 0xffff进行掩码,以剥离任何符号扩展名,并将结果作为无符号返回 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”的序列将以反向字节顺序使用网络字节顺序,值为“0x04030201”。

        枚举类java.nio.ByteOrder用于指定字节顺序。 ByteOrder.BIG_ENDIAN指定所谓的大端或网元字节顺序,其中高位字节先到。 摩托罗拉和Sparc处理器以这种格式存储数据,而英特尔处理器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开始于索引off 返回读取的字节数。 如果没有字节可以读取,因为已经到达流的末尾,则返回-1

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

        参数
        b - 要写入的字节数组。
        off - 起始位置在 b内写。
        len - 要阅读的最大数量为 byte
        结果
        实际读取的字节数,或 -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
        异常
        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屏蔽它,以便剥离任何符号扩展位,并将其作为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
        结果
        来自流的无符号短值,作为int。
        异常
        EOFException - 如果流在读取所有字节之前到达结束。
        IOException - 如果发生I / O错误。
        另请参见:
        getByteOrder()
      • readChar

        char readChar​()
               throws IOException
        相当于readUnsignedShort ,除了使用char数据类型返回结果。

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

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

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

        流内的位偏移被忽略,并被视为零。

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

        long readUnsignedInt​()
                      throws IOException
        从流中读取4个字节,(从概念上讲)根据当前字节顺序连接它们,将结果转换为长时间,用0xffffffffL对其进行0xffffffffL ,以剥离任何符号扩展位,并将结果返回为无符号long值。

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

        结果
        来自流的无符号int值,长久。
        异常
        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
        结果
        来自流的双重值。
        异常
        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
        结果
        一个包含流中文本行的字符串。
        异常
        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
        异常
        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秒。
        异常
        NullPointerException - 如果 bnull
        EOFException - 如果流在读取所有字节之前到达结束。
        IOException - 如果发生I / O错误。
      • readFully

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

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

        参数
        s - 要写入的短裤阵列。
        off - 起始位置在 s内写。
        len - 要阅读的最大数量为 short
        异常
        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
        异常
        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 - 要写入的数组。
        off - 起始位置在 l内写。
        len - 要阅读的最大数量 long
        异常
        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
        异常
        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 如果到达流的末尾,将抛出一个java.io.EOFException

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

        参数
        d - 要写入的双精度数组。
        off - 起始位置在 d内写。
        len - 要阅读的最大数量 double
        异常
        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方法。

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

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

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

        long readBits​(int numBits)
               throws IOException
        从流读取一个bitstring,并将其作为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
        结果
        一个 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每对调用保存并恢复。

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

      • reset

        void reset​()
            throws IOException
        在最近不匹配的调用mark返回到其之前位置的流指针,包括位偏移量。

        拨打reset没有对应的电话对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​()
        返回true如果这个ImageInputStream缓存数据本身,以允许向后搜索。 为了节省高速缓存资源,应用程序可以参考这一点,以确定刷新频率或是否进行刷新。
        结果
        true如果这个 ImageInputStream缓存数据。
        另请参见:
        isCachedMemory()isCachedFile()
      • isCachedMemory

        boolean isCachedMemory​()
        返回true如果这个ImageInputStream缓存数据本身,以便允许向后搜索,并且高速缓存保存在主内存中。 为了节省高速缓存资源,应用程序可以参考这一点,以确定刷新频率或是否进行刷新。
        结果
        true如果这个 ImageInputStream缓存数据在主内存中。
        另请参见:
        isCached()isCachedFile()
      • isCachedFile

        boolean isCachedFile​()
        返回true如果这个ImageInputStream缓存数据本身,以便允许向后搜索,并且高速缓存保存在临时文件中。 为了节省高速缓存资源,应用程序可以参考这一点,以确定刷新频率或是否进行刷新。
        结果
        true如果这个 ImageInputStream数据缓存在一个临时文件中。
        另请参见:
        isCached()isCachedMemory()
      • close

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