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

Class ImageInputStreamImpl

    • Field Summary

      Fields  
      Modifier and Type Field 描述
      protected int bitOffset
      流内的当前位偏移。
      protected ByteOrder byteOrder
      作为枚举类别 java.nio.ByteOrder的实例的流的字节顺序,其中 ByteOrder.BIG_ENDIAN指示网络字节顺序和 ByteOrder.LITTLE_ENDIAN表示相反的顺序。
      protected long flushedPos
      可以丢弃数据的位置。
      protected long streamPos
      流内当前读取的位置。
    • 构造方法摘要

      构造方法  
      Constructor 描述
      ImageInputStreamImpl​()
      构造一个 ImageInputStreamImpl
    • 方法摘要

      所有方法  接口方法  抽象方法  具体的方法  弃用的方法 
      Modifier and Type 方法 描述
      protected void checkClosed​()
      如果流已关闭,则抛出一个 IOException
      void close​()
      关闭流。
      protected void finalize​()
      已过时。
      finalize方法已被弃用。 为了执行清理,覆盖finalize子类应被修改为使用替代的清理机制并删除覆盖的finalize方法。 当覆盖finalize方法时,其实现必须明确确保按照super.finalize()中所述调用super.finalize() 有关迁移选项的更多信息,请参阅Object.finalize()的规范。
      void flush​()
      在当前流位置之前丢弃流的初始位置。
      void flushBefore​(long pos)
      在指示的位置之前丢弃流的初始部分。
      int getBitOffset​()
      返回当前的位偏移量,为0到7之间的整数,包括0和7。
      ByteOrder getByteOrder​()
      作为 java.nio.ByteOrder枚举的实例,返回从该流读取数据值的字节顺序。
      long getFlushedPosition​()
      返回可以执行搜索的流中的最早位置。
      long getStreamPosition​()
      返回流的当前字节位置。
      boolean isCached​()
      默认实现返回false。
      boolean isCachedFile​()
      默认实现返回false。
      boolean isCachedMemory​()
      默认实现返回false。
      long length​()
      返回 -1L以指示流长度不明确。
      void mark​()
      将当前流位置推送到标记位置的堆栈。
      abstract int read​()
      从流中读取一个字节,并将其作为 int和255之间的 int返回。
      int read​(byte[] b)
      一个方便的方法,调用 read(b, 0, b.length)
      abstract 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​()
      从流中读取一个字节,并且(在概念上)将其转换为int,使用 0xff对其进行 0xff ,以便剥离任何符号扩展位,并将其作为 byte值返回。
      long readUnsignedInt​()
      从流中读取4个字节,(概念上)根据当前字节顺序连接它们,将结果转换为长时间,将其用 0xffffffffL屏蔽,以剥离任何符号扩展位,并将结果作为无符号返回 long值。
      int readUnsignedShort​()
      从流中读取两个字节,(在概念上)根据当前字节顺序连接它们,将结果值转换为 int ,使用 0xffff屏蔽它,以便剥离任何符号扩展名,并将结果作为无符号返回价值 int
      String readUTF​()
      读取已使用 modified UTF-8格式编码的字符串。
      void reset​()
      从标记位置的堆栈中重置当前流字节和位位置。
      void seek​(long pos)
      将当前流位置设置为所需位置。
      void setBitOffset​(int bitOffset)
      将位偏移设置为0到7之间的整数,包括0和7。
      void setByteOrder​(ByteOrder byteOrder)
      设置用于将来从该流读取数据值的字节顺序。
      int skipBytes​(int n)
      通过致电 seek(getStreamPosition() + n)当前的流位置。
      long skipBytes​(long n)
      通过致电 seek(getStreamPosition() + n)前进当前流位置。
    • 字段详细信息

      • byteOrder

        protected ByteOrder byteOrder
        作为枚举类别java.nio.ByteOrder的实例的流的字节顺序,其中ByteOrder.BIG_ENDIAN表示网络字节顺序和ByteOrder.LITTLE_ENDIAN表示相反的顺序。 默认值为ByteOrder.BIG_ENDIAN
      • streamPos

        protected long streamPos
        流内当前读取的位置。 子类负责将此值保留为任何改写读取位置的方法。
      • bitOffset

        protected int bitOffset
        流内的当前位偏移。 子类负责保持这个值的最新值,它们覆盖改变位偏移的任何方法。
      • flushedPos

        protected long flushedPos
        可以丢弃数据的位置。 寻求更小的位置是不允许的。 flushedPos将始终为> = 0。
    • 构造方法详细信息

      • ImageInputStreamImpl

        public ImageInputStreamImpl​()
        构造一个 ImageInputStreamImpl
    • 方法详细信息

      • checkClosed

        protected final void checkClosed​()
                                  throws IOException
        如果流已关闭,则抛出一个IOException 子类可以从需要流不被关闭的任何方法调用此方法。
        异常
        IOException - 如果流关闭。
      • setByteOrder

        public void setByteOrder​(ByteOrder byteOrder)
        描述从接口ImageInputStream复制
        设置用于将来从该流读取数据值的字节顺序。 例如,如果以4字节整数读取,字节“0x01 0x02 0x03 0x04”的序列将以反向字节顺序使用网络字节顺序,值为“0x04030201”。

        枚举类java.nio.ByteOrder用于指定字节顺序。 值为ByteOrder.BIG_ENDIAN指定所谓的大端或网络字节顺序,其中高位字节首先出现。 摩托罗拉和Sparc处理器以这种格式存储数据,而英特尔处理器按照ByteOrder.LITTLE_ENDIAN顺序存储数据。

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

        Specified by:
        setByteOrder在接口 ImageInputStream
        参数
        byteOrder - ByteOrder.BIG_ENDIANjava.nio.ByteOrder.LITTLE_ENDIAN ,表示网络字节顺序或其反向将用于将来读取。
        另请参见:
        ByteOrderImageInputStream.getByteOrder()ImageInputStream.readBits(int)
      • read

        public abstract int read​()
                          throws IOException
        从流中读取一个字节,并将其作为int在0到255之间返回。如果达到EOF,则返回-1

        子类必须为此方法提供一个实现。 子类实现应该在退出之前更新流位置。

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

        Specified by:
        read在接口 ImageInputStream
        结果
        流中下一个字节的值,如果达到EOF, -1
        异常
        IOException - 如果流已关闭。
      • read

        public int read​(byte[] b)
                 throws IOException
        一个方便的方法,调用read(b, 0, b.length)

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

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

        public abstract int read​(byte[] b,
                                 int off,
                                 int len)
                          throws IOException
        从流中读取最多len个字节,并将其存储到b ,索引号为off 如果没有字节可以读取,因为已经到达流的末尾,则返回-1

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

        子类必须为此方法提供一个实现。 子类实现应该在退出之前更新流位置。

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

        public void readBytes​(IIOByteBuffer buf,
                              int len)
                       throws IOException
        描述从接口ImageInputStream复制
        从流中读取最多len个字节,并修改提供的IIOByteBuffer以指示可能找到数据的字节数组,偏移量和长度。 来电者不应该尝试修改在IIOByteBuffer找到的数据。

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

        Specified by:
        readBytes在接口 ImageInputStream
        参数
        buf - 要修改的IIOByteBuffer对象。
        len - 要阅读的最大数量 byte
        异常
        IOException - 如果发生I / O错误。
      • readBoolean

        public boolean readBoolean​()
                            throws IOException
        描述从接口ImageInputStream复制
        从该流读取一个字节,并返回一个boolean的值true ,如果它是非零, false ,如果它是零。

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

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

        public byte readByte​()
                      throws IOException
        描述从接口ImageInputStream复制
        从流中读取一个字节,并将其作为byte值返回。 0x000x7f之间的字节值表示0127之间的整数值。 0x800xff之间的值代表从-128/1

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

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

        public int readUnsignedByte​()
                             throws IOException
        说明从界面: ImageInputStream复制
        从流读取一个字节,(在概念上)将其转换为int,用0xff对其进行0xff ,以剥离任何符号扩展位,并将其作为byte值返回。

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

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

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

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

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

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

        public long readUnsignedInt​()
                             throws IOException
        描述从接口ImageInputStream复制
        从流中读取4个字节,并且(在概念上)根据当前字节顺序连接它们,将结果转换为长,将其用0xffffffffL ,以便剥离任何符号扩展位,并将结果作为无符号的long返回值。

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

        Specified by:
        readUnsignedInt在接口 ImageInputStream
        结果
        来自流的无符号int值,长久。
        异常
        EOFException - 如果流在读取所有字节之前到达结束。
        IOException - 如果发生I / O错误。
        另请参见:
        ImageInputStream.getByteOrder()
      • readLine

        public String readLine​()
                        throws IOException
        描述从接口ImageInputStream复制
        从输入流读取下一行文本。 它读取连续字节,将每个字节分别转换为字符,直到遇到行终止符或文件结尾; 读取的字符然后作为String返回。 请注意,由于此方法处理字节,它不支持输入完整的Unicode字符集。

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

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

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

        public String readUTF​()
                       throws IOException
        描述从接口ImageInputStream复制
        读取已使用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
        Specified by:
        readUTF在接口 ImageInputStream
        结果
        从流中读取的字符串。
        异常
        EOFException - 如果此流在读取所有字节之前到达结束。
        UTFDataFormatException - 如果字节不表示字符串的有效修改的UTF-8编码。
        IOException - 如果发生I / O错误。
      • readFully

        public void readFully​(byte[] b,
                              int off,
                              int len)
                       throws IOException
        描述从接口ImageInputStream复制
        从流中读取len个字节,并将其存储到b ,索引号为off 如果达到流的末尾,将抛出一个java.io.EOFException

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

        Specified by:
        readFully在接口 DataInput
        Specified by:
        readFully在接口 ImageInputStream
        参数
        b - 要写入的字节数组。
        off - 起始位置在 b内写。
        len - 要阅读的最大数量 byte
        异常
        EOFException - 如果流在读取所有字节之前到达结束。
        IOException - 如果发生I / O错误。
      • readFully

        public void readFully​(byte[] b)
                       throws IOException
        说明从界面ImageInputStream复制
        读取b.length从流字节,并将其存储到b开始于索引0 如果到达流的末尾,将抛出一个java.io.EOFException

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

        Specified by:
        readFully在接口 DataInput
        Specified by:
        readFully在接口 ImageInputStream
        参数
        b -的阵列 byte秒。
        异常
        EOFException - 如果流在读取所有字节之前到达结束。
        IOException - 如果发生I / O错误。
      • readFully

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

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

        Specified by:
        readFully在接口 ImageInputStream
        参数
        s - 要写入的短裤阵列。
        off - 起始位置在 s内写。
        len - 要阅读的最大数量 short
        异常
        EOFException - 如果流在读取所有字节之前到达结束。
        IOException - 如果发生I / O错误。
      • readFully

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

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

        Specified by:
        readFully在接口 ImageInputStream
        参数
        c - 要写入的字符数组。
        off - 起始位置在 c内写。
        len - 要阅读的最大数量 char
        异常
        EOFException - 如果流在读取所有字节之前到达结束。
        IOException - 如果发生I / O错误。
      • readFully

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

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

        Specified by:
        readFully在接口 ImageInputStream
        参数
        i - 要写入的int数组。
        off - 起始位置在 i内写。
        len - 要阅读的最大数量 int
        异常
        EOFException - 如果流在读取所有字节之前到达结束。
        IOException - 如果发生I / O错误。
      • readFully

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

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

        Specified by:
        readFully在接口 ImageInputStream
        参数
        l - 要写入的数组。
        off - 起始位置在 l内写。
        len - 要阅读的最大数量 long
        异常
        EOFException - 如果流在读取所有字节之前到达结束。
        IOException - 如果发生I / O错误。
      • readFully

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

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

        Specified by:
        readFully在接口 ImageInputStream
        参数
        f - 要写入的浮点数组。
        off - 起始位置在 f内写。
        len - 要阅读的最大数量 float
        异常
        EOFException - 如果流在读取所有字节之前到达结束。
        IOException - 如果发生I / O错误。
      • readFully

        public void readFully​(double[] d,
                              int off,
                              int len)
                       throws IOException
        描述从接口ImageInputStream复制
        读取len根据当前字节顺序从流双打(64位IEEE双精度浮点值),并且将它们存储到d开始于索引off 如果达到流的末尾,将抛出一个java.io.EOFException

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

        Specified by:
        readFully在接口 ImageInputStream
        参数
        d - 要写入的双精度数组。
        off - 起始位置在 d内写。
        len - 要阅读的最大数量 double
        异常
        EOFException - 如果流在读取所有字节之前到达结束。
        IOException - 如果发生I / O错误。
      • getBitOffset

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

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

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

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

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

        public long readBits​(int numBits)
                      throws IOException
        描述从接口ImageInputStream复制
        从流读取一个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

        Specified by:
        readBits在接口 ImageInputStream
        参数
        numBits - 要读取的位数,为0和64之间的 int (含)。
        结果
        bitstring,作为一个 long最后一位读取存储在最低有效位。
        异常
        EOFException - 如果流在读取所有位之前到达结束。
        IOException - 如果发生I / O错误。
      • length

        public long length​()
        返回-1L以表示该流具有未知长度。 子类必须覆盖此方法以提供实际的长度信息。
        Specified by:
        length在接口 ImageInputStream
        结果
        -1L表示未知长度。
      • skipBytes

        public int skipBytes​(int n)
                      throws IOException
        通过致电seek(getStreamPosition() + n)前进当前流位置。

        位偏移重置为零。

        Specified by:
        skipBytes在接口 DataInput
        Specified by:
        skipBytes在接口 ImageInputStream
        参数
        n - 要查找的字节数。
        结果
        一个表示跳过的字节数的 int
        异常
        IOException - 如果 getStreamPosition在计算起始位置或结束位置时抛出一个 IOException
      • skipBytes

        public long skipBytes​(long n)
                       throws IOException
        通过致电seek(getStreamPosition() + n)当前的流位置。

        位偏移重置为零。

        Specified by:
        skipBytes在接口 ImageInputStream
        参数
        n - 要查找的字节数。
        结果
        一个 long表示跳过的字节数。
        异常
        IOException - 如果 getStreamPosition在计算起始位置或结束位置时抛出一个 IOException
      • seek

        public void seek​(long pos)
                  throws IOException
        描述从接口ImageInputStream复制
        将当前流位置设置为所需位置。 下一次读取将发生在此位置。 位偏移设置为0。

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

        寻求文件结尾是合法的; 一个java.io.EOFException只有在执行读取时才会被抛出。

        Specified by:
        seek在接口 ImageInputStream
        参数
        pos - 一个包含所需文件指针位置的 long
        异常
        IOException - 如果发生任何其他I / O错误。
      • mark

        public void mark​()
        将当前流位置推送到标记位置的堆栈。
        Specified by:
        mark在接口 ImageInputStream
      • reset

        public void reset​()
                   throws IOException
        从标记位置的堆栈中重置当前流字节和位位置。

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

        Specified by:
        reset在接口 ImageInputStream
        异常
        IOException - 如果发生I / O错误。
      • flushBefore

        public void flushBefore​(long pos)
                         throws IOException
        描述从接口ImageInputStream复制
        在指示的位置之前丢弃流的初始部分。 试图寻求在流的冲洗部分内的偏移将导致一个IndexOutOfBoundsException

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

        Specified by:
        flushBefore在接口 ImageInputStream
        参数
        pos - 一个 long其中包含可能被刷新的流前缀的长度。
        异常
        IOException - 如果发生I / O错误。
      • getFlushedPosition

        public long getFlushedPosition​()
        说明从接口ImageInputStream复制
        返回可以执行搜索的流中的最早位置。 返回的值将是传递到先前调用的所有值的最大值为flushBefore
        Specified by:
        getFlushedPosition在接口 ImageInputStream
        结果
        最早寻求法定职位,作为 long
      • close

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

        @Deprecated(since="9")
        protected void finalize​()
                         throws Throwable
        已过时。 finalize方法已被弃用。 为了执行清理,覆盖finalize子类应被修改为使用替代的清理机制并删除覆盖的finalize方法。 当覆盖finalize方法时,其实现必须明确确保按照super.finalize()中所述调用super.finalize() 有关迁移选项的更多信息,请参阅Object.finalize()的规范。
        在垃圾收集之前完成此对象。 调用close方法来关闭任何打开的输入源。 不应该从应用程序代码调用此方法。
        重写:
        finalizeObject
        异常
        Throwable - 如果在超类最终化期间发生错误。
        另请参见:
        WeakReferencePhantomReference