Module java.desktop

Class ImageInputStreamImpl

java.lang.Object
javax.imageio.stream.ImageInputStreamImpl
所有已实现的接口:
Closeable, DataInput, AutoCloseable, ImageInputStream
直接已知的子类:
FileCacheImageInputStream, FileImageInputStream, ImageOutputStreamImpl, MemoryCacheImageInputStream

public abstract class ImageInputStreamImpl extends Object implements ImageInputStream
实现ImageInputStream接口的抽象类。该类旨在减少子类必须实现的方法数量。

特别是,该类处理大部分或全部的字节顺序解释、缓冲、标记/重置、丢弃、关闭和处理细节。

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected int
    流中的当前位偏移量。
    protected ByteOrder
    流的字节顺序,作为枚举类java.nio.ByteOrder的实例,其中ByteOrder.BIG_ENDIAN表示网络字节顺序,ByteOrder.LITTLE_ENDIAN表示反向顺序。
    protected long
    可丢弃数据的位置之前。
    protected long
    流中的当前读取位置。
  • Constructor Summary

    Constructors
    Constructor
    Description
    构造一个ImageInputStreamImpl
  • Method Summary

    Modifier and Type
    Method
    Description
    protected final void
    如果流已关闭,则抛出IOException
    void
    close()
    关闭流。
    protected void
    已弃用,将来会移除: 该API元素可能在将来的版本中被移除。
    已弃用终结。
    void
    flush()
    丢弃当前流位置之前的初始位置。
    void
    flushBefore(long pos)
    丢弃指定位置之前的流的初始部分。
    int
    返回当前位偏移量,作为介于0和7之间的整数。
    返回数据值将从该流中读取的字节顺序,作为java.nio.ByteOrder枚举的实例。
    long
    返回可以执行寻址的流中最早的位置。
    long
    返回流的当前字节位置。
    boolean
    默认实现返回false。
    boolean
    默认实现返回false。
    boolean
    默认实现返回false。
    long
    length()
    返回-1L以指示流长度未知。
    void
    mark()
    将当前流位置推送到标记位置堆栈上。
    abstract int
    read()
    从流中读取一个字节并将其作为介于0和255之间的int返回。
    int
    read(byte[] b)
    调用read(b, 0, b.length)的便利方法。
    abstract int
    read(byte[] b, int off, int len)
    从流中读取最多len字节,并将它们存储到从索引off开始的b中。
    int
    从流中读取一个位并将其作为值为01int返回。
    long
    readBits(int numBits)
    从流中读取一个位串,并将其作为long返回,其中读取的第一个位成为输出的最高有效位。
    boolean
    从流中读取一个字节并返回一个boolean值,如果不为零则返回true,如果为零则返回false
    byte
    从流中读取一个字节并将其作为byte值返回。
    void
    readBytes(IIOByteBuffer buf, int len)
    从流中读取最多len字节,并修改提供的IIOByteBuffer以指示可以找到数据的字节数组、偏移量和长度。
    char
    等效于readUnsignedShort,只是使用char数据类型返回结果。
    double
    从流中读取8个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为double返回。
    float
    从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为float返回。
    void
    readFully(byte[] b)
    从流中读取b.length字节,并将它们存储到从索引0开始的b中。
    void
    readFully(byte[] b, int off, int len)
    从流中读取len字节,并将它们存储到从索引off开始的b中。
    void
    readFully(char[] c, int off, int len)
    根据当前字节顺序从流中读取len个字符(无符号16位整数),并将它们存储到从索引off开始的c中。
    void
    readFully(double[] d, int off, int len)
    根据当前字节顺序从流中读取len个双精度(64位IEEE双精度浮点数),并将它们存储到从索引off开始的d中。
    void
    readFully(float[] f, int off, int len)
    根据当前字节顺序从流中读取len个单精度(32位IEEE单精度浮点数),并将它们存储到从索引off开始的f中。
    void
    readFully(int[] i, int off, int len)
    根据当前字节顺序从流中读取len个有符号32位整数,并将它们存储到从索引off开始的i中。
    void
    readFully(long[] l, int off, int len)
    根据当前字节顺序从流中读取len个有符号64位整数,并将它们存储到从索引off开始的l中。
    void
    readFully(short[] s, int off, int len)
    根据当前字节顺序从流中读取len个有符号16位整数,并将它们存储到从索引off开始的s中。
    int
    从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为int返回。
    从输入流中读取下一行文本。
    long
    从流中读取8个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为long返回。
    short
    从流中读取两个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为short值返回。
    int
    从流中读取一个字节,并(概念上)将其转换为int,使用0xff进行掩码以去除任何符号扩展位,并将其作为byte值返回。
    long
    从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,将结果转换为long,使用0xffffffffL进行掩码以去除任何符号扩展位,并将结果作为无符号long值返回。
    int
    从流中读取两个字节,并(概念上)根据当前字节顺序连接它们,将结果转换为int,使用0xffff进行掩码以去除任何符号扩展位,并将结果作为无符号int值返回。
    读取使用modified UTF-8格式编码的字符串。
    void
    reset()
    从标记位置堆栈重置当前流字节和位位置。
    void
    seek(long pos)
    将当前流位置设置为所需位置。
    void
    setBitOffset(int bitOffset)
    将位偏移设置为介于0和7之间的整数。
    void
    setByteOrder(ByteOrder byteOrder)
    为将来从该流读取数据值设置所需的字节顺序。
    int
    skipBytes(int n)
    通过调用seek(getStreamPosition() + n)来推进当前流位置。
    long
    skipBytes(long n)
    通过调用seek(getStreamPosition() + n)来推进当前流位置。

    Methods declared in class java.lang.Object

    clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • 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。
  • Constructor Details

    • ImageInputStreamImpl

      public ImageInputStreamImpl()
      构造一个ImageInputStreamImpl
  • Method Details

    • checkClosed

      protected final void checkClosed() throws IOException
      如果流已关闭,则抛出IOException。子类可以从任何需要流未关闭的方法中调用此方法。
      抛出:
      IOException - 如果流已关闭。
    • setByteOrder

      public void setByteOrder(ByteOrder byteOrder)
      从接口复制的描述: ImageInputStream
      为将来从该流读取数据值设置所需的字节顺序。例如,如果将字节序列'0x01 0x02 0x03 0x04'作为4字节整数读取,使用网络字节顺序将值为'0x01020304',而在反向字节顺序下值为'0x04030201'。

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

      字节顺序不会影响从readBits方法返回的结果(或由ImageOutputStream.writeBits写入的值)。

      指定者:
      setByteOrder 在接口 ImageInputStream
      参数:
      byteOrder - ByteOrder.BIG_ENDIANjava.nio.ByteOrder.LITTLE_ENDIAN之一,指示将来读取时使用网络字节顺序还是其反向顺序。
      参见:
    • getByteOrder

      public ByteOrder getByteOrder()
      从接口复制的描述: ImageInputStream
      返回将从此流中读取数据值的字节顺序,作为java.nio.ByteOrder枚举的实例。
      指定者:
      getByteOrder 在接口 ImageInputStream
      返回:
      ByteOrder.BIG_ENDIANByteOrder.LITTLE_ENDIAN之一,指示正在使用的字节顺序。
      参见:
    • read

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

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

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

      指定者:
      read 在接口 ImageInputStream
      返回:
      流中下一个字节的值,如果达到EOF,则返回-1
      抛出:
      IOException - 如果流已关闭。
    • read

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

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

      指定者:
      read 在接口 ImageInputStream
      参数:
      b - 要写入的字节数组。
      返回:
      实际读取的字节数,如果达到EOF,则返回-1
      抛出:
      NullPointerException - 如果bnull
      IOException - 如果发生I/O错误。
    • read

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

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

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

      指定者:
      read 在接口 ImageInputStream
      参数:
      b - 要写入的字节数组。
      off - 要写入的b中的起始位置。
      len - 要读取的最大字节数。
      返回:
      实际读取的字节数,如果达到EOF,则返回-1
      抛出:
      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中找到的数据。

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

      指定者:
      readBytes 在接口 ImageInputStream
      参数:
      buf - 要修改的IIOByteBuffer对象。
      len - 要读取的最大字节数。
      抛出:
      IOException - 如果发生I/O错误。
    • readBoolean

      public boolean readBoolean() throws IOException
      从接口复制的描述: ImageInputStream
      从流中读取一个字节并返回一个boolean值,如果不为零则返回true,如果为零则返回false

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

      指定者:
      readBoolean 在接口 DataInput
      指定者:
      readBoolean 在接口 ImageInputStream
      返回:
      流中的布尔值。
      抛出:
      EOFException - 如果达到流的末尾。
      IOException - 如果发生I/O错误。
    • readByte

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

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

      指定者:
      readByte 在接口 DataInput
      指定者:
      readByte 在接口 ImageInputStream
      返回:
      流中的有符号字节值。
      抛出:
      EOFException - 如果达到流的末尾。
      IOException - 如果发生I/O错误。
    • readUnsignedByte

      public int readUnsignedByte() throws IOException
      从接口复制的描述: ImageInputStream
      从流中读取一个字节,并(概念上)将其转换为int,使用0xff进行掩码以去除任何符号扩展位,并将其作为byte值返回。

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

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

      指定者:
      readUnsignedByte 在接口 DataInput
      指定者:
      readUnsignedByte 在接口 ImageInputStream
      返回值:
      从流中返回一个无符号字节值。
      抛出:
      EOFException - 如果到达流的末尾。
      IOException - 如果发生I/O错误。
    • readShort

      public short readShort() throws IOException
      从接口中复制的描述: ImageInputStream
      从流中读取两个字节,根据当前字节顺序(概念上)将它们连接起来,并将结果作为short值返回。

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

      指定者:
      readShort 在接口 DataInput
      指定者:
      readShort 在接口 ImageInputStream
      返回值:
      从流中返回一个有符号短整型值。
      抛出:
      EOFException - 如果在读取所有字节之前到达流的末尾。
      IOException - 如果发生I/O错误。
      参见:
    • readUnsignedShort

      public int readUnsignedShort() throws IOException
      从接口中复制的描述: ImageInputStream
      从流中读取两个字节,根据当前字节顺序(概念上)将它们连接起来,将结果转换为一个int,使用0xffff进行掩码处理以去除任何符号扩展位,并将结果作为无符号int值返回。

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

      指定者:
      readUnsignedShort 在接口 DataInput
      指定者:
      readUnsignedShort 在接口 ImageInputStream
      返回值:
      从流中返回一个无符号短整型值,作为一个整型。
      抛出:
      EOFException - 如果在读取所有字节之前到达流的末尾。
      IOException - 如果发生I/O错误。
      参见:
    • readChar

      public char readChar() throws IOException
      从接口中复制的描述: ImageInputStream
      等同于readUnsignedShort,只是结果使用char数据类型返回。

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

      指定者:
      readChar 在接口 DataInput
      指定者:
      readChar 在接口 ImageInputStream
      返回值:
      从流中返回一个无符号字符值。
      抛出:
      EOFException - 如果在读取所有字节之前到达流的末尾。
      IOException - 如果发生I/O错误。
      参见:
    • readInt

      public int readInt() throws IOException
      从接口中复制的描述: ImageInputStream
      从流中读取4个字节,根据当前字节顺序(概念上)将它们连接起来,并将结果作为一个int返回。

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

      指定者:
      readInt 在接口 DataInput
      指定者:
      readInt 在接口 ImageInputStream
      返回值:
      从流中返回一个有符号整型值。
      抛出:
      EOFException - 如果在读取所有字节之前到达流的末尾。
      IOException - 如果发生I/O错误。
      参见:
    • readUnsignedInt

      public long readUnsignedInt() throws IOException
      从接口中复制的描述: ImageInputStream
      从流中读取4个字节,根据当前字节顺序(概念上)将它们连接起来,将结果转换为一个长整型,使用0xffffffffL进行掩码处理以去除任何符号扩展位,并将结果作为无符号long值返回。

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

      指定者:
      readUnsignedInt 在接口 ImageInputStream
      返回值:
      从流中返回一个无符号整型值,作为一个长整型。
      抛出:
      EOFException - 如果在读取所有字节之前到达流的末尾。
      IOException - 如果发生I/O错误。
      参见:
    • readLong

      public long readLong() throws IOException
      从接口中复制的描述: ImageInputStream
      从流中读取8个字节,根据当前字节顺序(概念上)将它们连接起来,并将结果作为一个long返回。

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

      指定者:
      readLong 在接口 DataInput
      指定者:
      readLong 在接口 ImageInputStream
      返回值:
      从流中返回一个有符号长整型值。
      抛出:
      EOFException - 如果在读取所有字节之前到达流的末尾。
      IOException - 如果发生I/O错误。
      参见:
    • readFloat

      public float readFloat() throws IOException
      从接口中复制的描述: ImageInputStream
      从流中读取4个字节,根据当前字节顺序(概念上)将它们连接起来,并将结果作为一个float返回。

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

      指定由:
      readFloat 在接口 DataInput
      指定由:
      readFloat 在接口 ImageInputStream
      返回:
      流中的一个浮点值。
      抛出:
      EOFException - 如果在读取所有字节之前流到达末尾。
      IOException - 如果发生I/O错误。
      参见:
    • readDouble

      public double readDouble() throws IOException
      从接口复制的描述: ImageInputStream
      从流中读取8个字节,并根据当前字节顺序(conceptually)将它们连接起来,将结果作为double返回。

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

      指定由:
      readDouble 在接口 DataInput
      指定由:
      readDouble 在接口 ImageInputStream
      返回:
      流中的一个双精度值。
      抛出:
      EOFException - 如果在读取所有字节之前流到达末尾。
      IOException - 如果发生I/O错误。
      参见:
    • readLine

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

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

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

      指定由:
      readLine 在接口 DataInput
      指定由:
      readLine 在接口 ImageInputStream
      返回:
      包含来自流中的一行文本的字符串。
      抛出:
      IOException - 如果发生I/O错误。
    • readUTF

      public String readUTF() throws IOException
      从接口复制的描述: ImageInputStream
      读取使用修改后的UTF-8格式编码的字符串。 readUTF的一般约定是,它读取以修改后的UTF-8格式编码的Unicode字符字符串的表示形式;然后将这些字符作为String返回。

      首先,读取两个字节,并使用网络字节顺序(不考虑当前字节顺序设置)构造一个无符号的16位整数,类似于readUnsignedShort方法。这个整数值称为UTF长度,并指定要读取的附加字节数。然后通过将它们分组来将这些字节转换为字符。每个组的长度从组的第一个字节的值计算。组的后面的字节(如果有)是下一组的第一个字节。

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

      如果组的第一个字节匹配位模式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不兼容。

      指定由:
      readUTF 在接口 DataInput
      指定由:
      readUTF 在接口 ImageInputStream
      返回:
      从流中读取的一个字符串。
      抛出:
      EOFException - 如果此流在读取所有字节之前到达末尾。
      UTFDataFormatException - 如果字节不表示字符串的有效修改后的UTF-8编码。
      IOException - 如果发生I/O错误。
    • readFully

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

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

      指定由:
      readFully 在接口 DataInput
      指定由:
      readFully 在接口 ImageInputStream
      参数:
      b - 要写入的字节数组。
      off - 要写入的b中的起始位置。
      len - 要读取的最大字节数。
      抛出:
      EOFException - 如果在读取所有字节之前流到达末尾。
      IOException - 如果发生I/O错误。
    • readFully

      public void readFully(byte[] b) throws IOException
      从接口复制的描述: ImageInputStream
      从流中读取b.length字节,并将它们存储到从索引0开始的b中。如果到达流的末尾,将抛出java.io.EOFException异常。

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

      指定者:
      readFully 在接口 DataInput
      指定者:
      readFully 在接口 ImageInputStream
      参数:
      b - 一个byte数组。
      抛出:
      EOFException - 如果在读取所有字节之前到达流的末尾。
      IOException - 如果发生I/O错误。
    • readFully

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

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

      指定者:
      readFully 在接口 ImageInputStream
      参数:
      s - 一个short数组,用于写入。
      off - 写入到s中的起始位置。
      len - 要读取的最大short数。
      抛出:
      EOFException - 如果在读取所有字节之前到达流的末尾。
      IOException - 如果发生I/O错误。
    • readFully

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

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

      指定者:
      readFully 在接口 ImageInputStream
      参数:
      c - 一个char数组,用于写入。
      off - 写入到c中的起始位置。
      len - 要读取的最大char数。
      抛出:
      EOFException - 如果在读取所有字节之前到达流的末尾。
      IOException - 如果发生I/O错误。
    • readFully

      public void readFully(int[] i, int off, int len) throws IOException
      从接口中复制的描述: ImageInputStream
      从流中根据当前字节顺序读取len个int(有符号的32位整数),并将它们存储到从索引off开始的i中。如果到达流的末尾,将抛出java.io.EOFException异常。

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

      指定者:
      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位整数),并将它们存储到从索引off开始的l中。如果到达流的末尾,将抛出java.io.EOFException异常。

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

      指定者:
      readFully 在接口 ImageInputStream
      参数:
      l - 一个long数组,用于写入。
      off - 写入到l中的起始位置。
      len - 要读取的最大long数。
      抛出:
      EOFException - 如果在读取所有字节之前到达流的末尾。
      IOException - 如果发生I/O错误。
    • readFully

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

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

      指定者:
      readFully 在接口 ImageInputStream
      参数:
      f - 一个float数组,用于写入。
      off - 写入到f中的起始位置。
      len - 要读取的最大float数。
      抛出:
      EOFException - 如果在读取所有字节之前到达流的末尾。
      IOException - 如果发生I/O错误。
    • readFully

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

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

      指定者:
      readFully 在接口 ImageInputStream
      参数:
      d - 一个double数组,用于写入。
      off - 写入到d中的起始位置。
      len - 要读取的最大double数。
      抛出:
      EOFException - 如果在读取所有字节之前到达流的末尾。
      IOException - 如果发生I/O错误。
    • getStreamPosition

      public long getStreamPosition() throws IOException
      从接口中复制的描述: ImageInputStream
      返回流的当前字节位置。下一次读取将从此偏移开始。
      指定者:
      getStreamPosition 在接口 ImageInputStream
      返回:
      包含流位置的long。
      抛出:
      IOException - 如果发生I/O错误。
    • getBitOffset

      public int getBitOffset() throws IOException
      Description copied from interface: ImageInputStream
      返回当前位偏移量,作为一个介于0和7之间的整数。位偏移量通过调用readBits方法隐式更新。值为0表示正在读取的字节的最高有效位,值为7表示最低有效位。

      当流首次打开时,位偏移量设置为0,并且通过调用seekskipBytes或任何readreadFully方法时重置为0。

      指定者:
      getBitOffset 在接口 ImageInputStream
      返回:
      一个包含介于0和7之间的位偏移量的int
      抛出:
      IOException - 如果发生I/O错误。
      参见:
    • setBitOffset

      public void setBitOffset(int bitOffset) throws IOException
      从接口中复制的描述: ImageInputStream
      将位偏移量设置为介于0和7之间的整数。流中的字节偏移量,由getStreamPosition返回,保持不变。值为0表示正在读取的字节的最高有效位,值为7表示最低有效位。
      指定者:
      setBitOffset 在接口 ImageInputStream
      参数:
      bitOffset - 所需的偏移量,作为介于0和7之间的int
      抛出:
      IOException - 如果发生I/O错误。
      参见:
    • readBit

      public int readBit() throws IOException
      从接口中复制的描述: ImageInputStream
      从流中读取一个位,并将其作为一个值为01int返回。位偏移量增加1,并对8取模。
      指定者:
      readBit 在接口 ImageInputStream
      返回:
      一个包含值为01int
      抛出:
      EOFException - 如果在读取所有位之前到达流的末尾。
      IOException - 如果发生I/O错误。
    • readBits

      public long readBits(int numBits) throws IOException
      从接口中复制的描述: ImageInputStream
      从流中读取一个位串,并将其作为一个long返回,其中第一个读取的位成为输出的最高有效位。读取从由getStreamPosition指示的字节开始,在由getBitOffset给出的位开始。位偏移量增加numBits,并对8取模。

      流的字节顺序对此方法没有影响。此方法的返回值构造得好像逐个读取位,并将其移位到返回值的右侧,如下伪代码所示:

      
       long accum = 0L;
       for (int i = 0; i < numBits; i++) {
         accum <<= 1; // 向左移动一位以腾出空间
         accum |= readBit();
       }
       
      注意,因此readBits(32)的结果可能与readInt()的结果不相等,如果使用反向网络字节顺序(即,getByteOrder() == false)。

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

      指定者:
      readBits 在接口 ImageInputStream
      参数:
      numBits - 要读取的位数,作为介于0和64之间的int
      返回:
      位串,作为一个long,其中最后读取的位存储在最低有效位中。
      抛出:
      EOFException - 如果在读取所有位之前到达流的末尾。
      IOException - 如果发生I/O错误。
    • length

      public long length()
      返回-1L以指示流的长度未知。子类必须重写此方法以提供实际长度信息。
      指定者:
      length 在接口 ImageInputStream
      返回:
      -1L表示长度未知。
    • skipBytes

      public int skipBytes(int n) throws IOException
      通过调用seek(getStreamPosition() + n)将当前流位置向前移动n个字节。

      位偏移量被重置为零。

      指定者:
      skipBytes 在接口 DataInput
      指定者:
      skipBytes 在接口 ImageInputStream
      参数:
      n - 要向前移动的字节数。
      返回:
      一个表示跳过的字节数的int
      抛出:
      IOException - 如果在计算起始或结束位置时getStreamPosition抛出IOException
    • skipBytes

      public long skipBytes(long n) throws IOException
      通过调用seek(getStreamPosition() + n)将当前流位置向前移动n个字节。

      位偏移量被重置为零。

      指定者:
      skipBytes 在接口 ImageInputStream
      参数:
      n - 要向前移动的字节数。
      返回:
      一个表示跳过的字节数的long
      抛出:
      IOException - 如果在计算起始或结束位置时getStreamPosition抛出IOException
    • seek

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

      如果pos小于刷新位置(由getflushedPosition返回),则将抛出IndexOutOfBoundsException

      可以寻址超出文件末尾;只有在执行读取时才会抛出java.io.EOFException

      指定者:
      seek 在接口 ImageInputStream
      参数:
      pos - 包含所需文件指针位置的long
      抛出:
      IOException - 如果发生其他I/O错误。
    • mark

      public void mark()
      将当前流位置推送到标记位置堆栈上。
      指定者:
      mark 在接口 ImageInputStream
    • reset

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

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

      指定者:
      reset 在接口 ImageInputStream
      抛出:
      IOException - 如果发生I/O错误。
    • flushBefore

      public void flushBefore(long pos) throws IOException
      从接口中复制的描述: ImageInputStream
      丢弃指定位置之前的流的初始部分。尝试寻址到已刷新部分内部的偏移量将导致IndexOutOfBoundsException

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

      指定者:
      flushBefore 在接口 ImageInputStream中指定
      参数:
      pos - 包含可以刷新的流前缀长度的long
      抛出:
      IOException - 如果发生I/O错误。
    • flush

      public void flush() throws IOException
      从接口中复制的描述: ImageInputStream
      丢弃当前流位置之前的流初始位置。等效于flushBefore(getStreamPosition())
      指定者:
      flush 在接口 ImageInputStream中指定
      抛出:
      IOException - 如果发生I/O错误。
    • getFlushedPosition

      public long getFlushedPosition()
      从接口中复制的描述: ImageInputStream
      返回可以执行寻址的流中最早的位置。返回的值将是传递给flushBefore的所有值的最大值。
      指定者:
      getFlushedPosition 在接口 ImageInputStream中指定
      返回:
      作为long的寻址的最早合法位置。
    • isCached

      public boolean isCached()
      默认实现返回false。子类应该在缓存数据时覆盖此方法。
      指定者:
      isCached 在接口 ImageInputStream中指定
      返回:
      如果这个ImageInputStream缓存数据,则返回true
      参见:
    • isCachedMemory

      public boolean isCachedMemory()
      默认实现返回false。子类应该在主内存中缓存数据时覆盖此方法。
      指定者:
      isCachedMemory 在接口 ImageInputStream中指定
      返回:
      如果这个ImageInputStream在主内存中缓存数据,则返回true
      参见:
    • isCachedFile

      public boolean isCachedFile()
      默认实现返回false。子类应该在临时文件中缓存数据时覆盖此方法。
      指定者:
      isCachedFile 在接口 ImageInputStream中指定
      返回:
      如果这个ImageInputStream在临时文件中缓存数据,则返回true
      参见:
    • close

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

      @Deprecated(since="9", forRemoval=true) protected void finalize() throws Throwable
      Deprecated, for removal: This API element is subject to removal in a future version.
      Finalization has been deprecated for removal. See Object.finalize() for background information and details about migration options.
      在垃圾回收之前完成此对象的处理。将调用close方法来关闭任何打开的输入源。不应该从应用程序代码中调用此方法。
      覆盖:
      finalize 在类 Object中指定
      抛出:
      Throwable - 如果在超类终结期间发生错误。
      参见: