- 所有超级接口:
-
AutoCloseable,Closeable,DataInput
- 所有已知子接口:
-
ImageOutputStream
- 所有已知实现类:
-
FileCacheImageInputStream,FileCacheImageOutputStream,FileImageInputStream,FileImageOutputStream,ImageInputStreamImpl,ImageOutputStreamImpl,MemoryCacheImageInputStream,MemoryCacheImageOutputStream
ImageReader使用的可寻址输入流接口。各种输入源,如InputStream和File,以及未来的快速I/O源,可以通过适当的接口实现"包装",以供Image I/O API使用。
- 参见:
-
Method Summary
Modifier and TypeMethodDescriptionvoidclose()关闭流。voidflush()在当前流位置之前丢弃流的初始位置。voidflushBefore(long pos) 在指定位置之前丢弃流的初始部分。int返回当前位偏移量,作为介于0和7之间的整数,包括0和7。返回将从该流中读取数据值的字节顺序,作为java.nio.ByteOrder枚举的实例。long返回可以执行寻址的流中最早的位置。long返回流的当前字节位置。booleanisCached()如果此ImageInputStream自身缓存数据以允许向后寻址,则返回true。boolean如果此ImageInputStream自身缓存数据以允许向后寻址,并且缓存保存在临时文件中,则返回true。boolean如果此ImageInputStream自身缓存数据以允许向后寻址,并且缓存保存在主存中,则返回true。longlength()返回流的总长度(如果已知)。voidmark()标记流中的位置,以便在后续调用reset时返回该位置。intread()从流中读取一个字节并将其作为介于0和255之间的整数返回。intread(byte[] b) 从流中读取最多b.length字节,并将它们存储到从索引0开始的b中。intread(byte[] b, int off, int len) 从流中读取最多len字节,并将它们存储到从索引off开始的b中。intreadBit()从流中读取一个位并将其作为值为0或1的int返回。longreadBits(int numBits) 从流中读取一个位串,并将其作为long返回,其中读取的第一个位成为输出的最高有效位。boolean从流中读取一个字节并将其作为boolean值返回,如果不为零则返回true,如果为零则返回false。bytereadByte()从流中读取一个字节并将其作为byte值返回。voidreadBytes(IIOByteBuffer buf, int len) 从流中读取最多len字节,并修改提供的IIOByteBuffer以指示可以找到数据的字节数组、偏移量和长度。charreadChar()与readUnsignedShort等效,只是使用char数据类型返回结果。double从流中读取8个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为double返回。float从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为float返回。voidreadFully(byte[] b) 从流中读取b.length字节,并将它们存储到从索引0开始的b中。voidreadFully(byte[] b, int off, int len) 从流中读取len字节,并将它们存储到从索引off开始的b中。voidreadFully(char[] c, int off, int len) 根据当前字节顺序从流中读取len个字符(无符号16位整数),并将它们存储到从索引off开始的c中。voidreadFully(double[] d, int off, int len) 根据当前字节顺序从流中读取len个双精度(64位IEEE双精度浮点数),并将它们存储到从索引off开始的d中。voidreadFully(float[] f, int off, int len) 根据当前字节顺序从流中读取len个单精度(32位IEEE单精度浮点数),并将它们存储到从索引off开始的f中。voidreadFully(int[] i, int off, int len) 根据当前字节顺序从流中读取len个有符号32位整数,并将它们存储到从索引off开始的i中。voidreadFully(long[] l, int off, int len) 根据当前字节顺序从流中读取len个有符号64位整数,并将它们存储到从索引off开始的l中。voidreadFully(short[] s, int off, int len) 根据当前字节顺序从流中读取len个有符号16位整数,并将它们存储到从索引off开始的s中。intreadInt()从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为int返回。readLine()从输入流中读取下一行文本。longreadLong()从流中读取8个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为long返回。short从流中读取两个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为short值返回。int从流中读取一个字节,并(概念上)将其转换为int,使用0xff进行掩码以去除任何符号扩展位,并将其作为byte值返回。long从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,将结果转换为long,使用0xffffffffL进行掩码以去除任何符号扩展位,并将结果作为无符号long值返回。int从流中读取两个字节,并(概念上)根据当前字节顺序连接它们,将结果转换为int,使用0xffff进行掩码以去除任何符号扩展位,并将结果作为无符号int值返回。readUTF()读取使用modified UTF-8格式编码的字符串。voidreset()将流指针设置回最近未匹配调用mark时的先前位置,包括位偏移量。voidseek(long pos) 将当前流位置设置为所需位置。voidsetBitOffset(int bitOffset) 将位偏移设置为介于0和7之间的整数。voidsetByteOrder(ByteOrder byteOrder) 为将来从该流中读取数据值设置所需的字节顺序。intskipBytes(int n) 将流位置向前移动给定的字节数。longskipBytes(long n) 将流位置向前移动给定的字节数。
-
Method Details
-
setByteOrder
为将来从该流中读取数据值设置所需的字节顺序。例如,如果将字节序列'0x01 0x02 0x03 0x04'读取为4字节整数,则在网络字节顺序下值为'0x01020304',在反向字节顺序下值为'0x04030201'。枚举类
java.nio.ByteOrder用于指定字节顺序。值ByteOrder.BIG_ENDIAN指定所谓的大端或网络字节顺序,其中高位字节先出现。Motorola和Sparc处理器以此格式存储数据,而Intel处理器以相反的ByteOrder.LITTLE_ENDIAN顺序存储数据。字节顺序不会影响
readBits方法返回的结果(或ImageOutputStream.writeBits写入的值)。- 参数:
-
byteOrder-ByteOrder.BIG_ENDIAN或java.nio.ByteOrder.LITTLE_ENDIAN之一,指示将来读取时使用网络字节顺序还是其反向顺序。 - 参见:
-
getByteOrder
ByteOrder getByteOrder()返回将从该流中读取数据值的字节顺序,作为java.nio.ByteOrder枚举的实例。- 返回:
-
ByteOrder.BIG_ENDIAN或ByteOrder.LITTLE_ENDIAN之一,指示正在使用的字节顺序。 - 参见:
-
read
从流中读取一个字节,并将其作为介于0和255之间的整数返回。如果到达流的末尾,则返回-1。在读取发生之前,流中的位偏移被重置为零。
- 返回值:
- 从流中返回的字节值,作为int,或-1表示EOF。
- 抛出:
-
IOException- 如果发生I/O错误。
-
read
从流中读取最多b.length字节,并将它们存储到从索引0开始的b中。返回读取的字节数。如果无法读取任何字节,因为已到达流的末尾,则返回-1。在读取发生之前,流中的位偏移被重置为零。
- 参数:
-
b- 要写入的字节数组。 - 返回值:
-
实际读取的字节数,或
-1表示EOF。 - 抛出:
-
NullPointerException- 如果b为null。 -
IOException- 如果发生I/O错误。
-
read
从流中读取最多len字节,并将它们存储到从索引off开始的b中。返回读取的字节数。如果无法读取任何字节,因为已到达流的末尾,则返回-1。在读取发生之前,流中的位偏移被重置为零。
- 参数:
-
b- 要写入的字节数组。 -
off- 要写入的b中的起始位置。 -
len- 要读取的最大字节数。 - 返回值:
-
实际读取的字节数,或
-1表示EOF。 - 抛出:
-
NullPointerException- 如果b为null。 -
IndexOutOfBoundsException- 如果off为负数,len为负数,或off + len大于b.length。 -
IOException- 如果发生I/O错误。
-
readBytes
从流中读取最多len字节,并修改提供的IIOByteBuffer以指示可以找到数据的字节数组、偏移量和长度。调用者不应尝试修改IIOByteBuffer中找到的数据。在读取发生之前,流中的位偏移被重置为零。
- 参数:
-
buf- 要修改的IIOByteBuffer对象。 -
len- 要读取的最大字节数。 - 抛出:
-
IndexOutOfBoundsException- 如果len为负数。 -
NullPointerException- 如果buf为null。 -
IOException- 如果发生I/O错误。
-
readBoolean
从流中读取一个字节,并返回一个boolean值,如果不为零则返回true,如果为零则返回false。在读取发生之前,流中的位偏移被重置为零。
- 指定者:
-
readBoolean在接口DataInput中 - 返回值:
- 从流中返回的布尔值。
- 抛出:
-
EOFException- 如果到达流的末尾。 -
IOException- 如果发生I/O错误。
-
readByte
从流中读取一个字节,并将其作为byte值返回。介于0x00和0x7f之间的字节值表示介于0和127之间的整数值。介于0x80和0xff之间的值表示从-128到/1的负值。在读取发生之前,流中的位偏移被重置为零。
- 指定者:
-
readByte在接口DataInput中 - 返回值:
- 从流中返回的有符号字节值。
- 抛出:
-
EOFException- 如果到达流的末尾。 -
IOException- 如果发生I/O错误。
-
readUnsignedByte
从流中读取一个字节,并(概念上)将其转换为int,使用0xff进行掩码以去除任何符号扩展位,并将其作为byte值返回。因此,介于
0x00和0x7f之间的字节值将简单地作为介于0和127之间的整数值返回。介于0x80和0xff之间的值,通常表示负的byte值,将映射为介于128和255之间的正整数。在读取发生之前,流中的位偏移被重置为零。
- 指定者:
-
readUnsignedByte在接口DataInput中 - 返回值:
- 从流中返回的无符号字节值。
- 抛出:
-
EOFException- 如果到达流的末尾。 -
IOException- 如果发生I/O错误。
-
readShort
从流中读取两个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为short值返回。在读取发生之前,流中的位偏移被重置为零。
- 指定者:
-
readShort在接口DataInput中 - 返回值:
- 从流中返回的有符号短整数值。
- 抛出:
-
EOFException- 如果在读取所有字节之前到达流的末尾。 -
IOException- 如果发生I/O错误。 - 参见:
-
readUnsignedShort
从流中读取两个字节,并(概念上)根据当前字节顺序连接它们,将结果转换为int,使用0xffff进行掩码以去除任何符号扩展位,并将结果作为无符号int值返回。在读取发生之前,流中的位偏移被重置为零。
- 指定者:
-
readUnsignedShort在接口DataInput中 - 返回值:
- 从流中返回的无符号短整数值,作为int。
- 抛出:
-
EOFException- 如果在读取所有字节之前到达流的末尾。 -
IOException- 如果发生I/O错误。 - 参见:
-
readChar
等同于readUnsignedShort,只是使用char数据类型返回结果。在读取发生之前,流中的位偏移被重置为零。
- 指定者:
-
readChar在接口DataInput中 - 返回值:
- 从流中返回的无符号char值。
- 抛出:
-
EOFException- 如果在读取所有字节之前到达流的末尾。 -
IOException- 如果发生I/O错误。 - 参见:
-
readInt
从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为int返回。忽略流中的位偏移,并将其视为零。
- 指定由:
-
readInt在接口DataInput中 - 返回:
- 流中的一个有符号整数值。
- 抛出:
-
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。 - 参见:
-
readUnsignedInt
从流中读取4个字节,(概念上)根据当前字节顺序连接它们,将结果转换为长整型,使用0xffffffffL进行掩码处理以去除任何符号扩展位,并将结果作为无符号long值返回。在读取发生之前,流中的位偏移被重置为零。
- 返回:
- 作为长整型的流中的无符号整数值。
- 抛出:
-
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。 - 参见:
-
readLong
从流中读取8个字节,(概念上)根据当前字节顺序连接它们,并将结果作为long返回。在读取发生之前,流中的位偏移被重置为零。
- 指定由:
-
readLong在接口DataInput中 - 返回:
- 流中的一个有符号长整型值。
- 抛出:
-
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。 - 参见:
-
readFloat
从流中读取4个字节,(概念上)根据当前字节顺序连接它们,并将结果作为float返回。在读取发生之前,流中的位偏移被重置为零。
- 指定由:
-
readFloat在接口DataInput中 - 返回:
- 流中的一个浮点数值。
- 抛出:
-
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。 - 参见:
-
readDouble
从流中读取8个字节,(概念上)根据当前字节顺序连接它们,并将结果作为double返回。在读取发生之前,流中的位偏移被重置为零。
- 指定由:
-
readDouble在接口DataInput中 - 返回:
- 流中的一个双精度数值。
- 抛出:
-
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。 - 参见:
-
readLine
从输入流中读取下一行文本。它读取连续的字节,将每个字节单独转换为字符,直到遇到行终止符或文件结束;然后将读取的字符作为String返回。请注意,因为此方法处理字节,所以不支持完整的Unicode字符集的输入。如果在读取任何字节之前遇到文件结束,则返回
null。否则,读取的每个字节都通过零扩展转换为char类型。如果遇到字符'\n',则将其丢弃并停止读取。如果遇到字符'\r',则将其丢弃,并且如果接下来的字节转换为字符'\n',则也将其丢弃;然后停止读取。如果在遇到字符'\n'和'\r'之一之前遇到文件结束,则停止读取。一旦停止读取,将返回一个包含所有读取但未丢弃的字符的String,按顺序取出。请注意,此字符串中的每个字符的值都小于\u0100,即(char)256。在读取发生之前,流中的位偏移被重置为零。
- 指定由:
-
readLine在接口DataInput中 - 返回:
- 包含来自流中一行文本的字符串。
- 抛出:
-
IOException- 如果发生I/O错误。
-
readUTF
读取使用修改的UTF-8格式编码的字符串。readUTF的一般约定是,它读取以修改的UTF-8格式编码的Unicode字符字符串的表示形式;然后将这些字符作为String返回。首先,读取两个字节并使用它们构造一个无符号的16位整数,类似于
readUnsignedShort方法,使用网络字节顺序(不考虑当前字节顺序设置)。这个整数值称为UTF长度,并指定要读取的附加字节数。然后将这些字节按组转换为字符。每个组的长度从组的第一个字节的值计算。组的下一个字节(如果有)是下一组的第一个字节。如果组的第一个字节匹配位模式
0xxxxxxx(其中x表示“可能为0或1”),则该组只包含该字节。将该字节进行零扩展以形成一个字符。如果组的第一个字节匹配位模式
110xxxxx,则该组包含该字节a和第二个字节b。如果没有字节b(因为字节a是要读取的最后一个字节),或者字节b不匹配位模式10xxxxxx,则抛出UTFDataFormatException。否则,将该组转换为字符:
如果组的第一个字节匹配位模式(char)(((a & 0x1F) << 6) | (b & 0x3F))1110xxxx,则该组包含该字节a和另外两个字节b和c。如果没有字节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中 - 返回:
- 从流中读取的字符串。
- 抛出:
-
EOFException- 如果在读取所有字节之前流到达末尾。 -
UTFDataFormatException- 如果字节不表示字符串的有效修改UTF-8编码。 -
IOException- 如果发生I/O错误。
-
readFully
从流中读取len字节,并将它们存储到从索引off开始的b中。如果到达流的末尾,将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 指定由:
-
readFully在接口DataInput - 参数:
-
b- 要写入的字节数组。 -
off- 写入的起始位置在数组b内。 -
len- 要读取的最大字节数。 - 抛出:
-
IndexOutOfBoundsException- 如果off为负、len为负或off + len大于b.length。 -
NullPointerException- 如果b为null。 -
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。
-
readFully
从流中读取b.length字节,并将它们存储到从索引0开始的b中。如果到达流的末尾,将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 指定由:
-
readFully在接口DataInput - 参数:
-
b- 一个byte数组。 - 抛出:
-
NullPointerException- 如果b为null。 -
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。
-
readFully
从流中根据当前字节顺序读取len个shorts(有符号的16位整数),并将它们存储到从索引off开始的s中。如果到达流的末尾,将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 参数:
-
s- 要写入的shorts数组。 -
off- 写入的起始位置在数组s内。 -
len- 要读取的最大shorts数。 - 抛出:
-
IndexOutOfBoundsException- 如果off为负、len为负或off + len大于s.length。 -
NullPointerException- 如果s为null。 -
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。
-
readFully
从流中根据当前字节顺序读取len个chars(无符号的16位整数),并将它们存储到从索引off开始的c中。如果到达流的末尾,将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 参数:
-
c- 要写入的chars数组。 -
off- 写入的起始位置在数组c内。 -
len- 要读取的最大chars数。 - 抛出:
-
IndexOutOfBoundsException- 如果off为负、len为负或off + len大于c.length。 -
NullPointerException- 如果c为null。 -
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。
-
readFully
从流中根据当前字节顺序读取len个ints(有符号的32位整数),并将它们存储到从索引off开始的i中。如果到达流的末尾,将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 参数:
-
i- 要写入的ints数组。 -
off- 写入的起始位置在数组i内。 -
len- 要读取的最大ints数。 - 抛出:
-
IndexOutOfBoundsException- 如果off为负、len为负或off + len大于i.length。 -
NullPointerException- 如果i为null。 -
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。
-
readFully
从流中根据当前字节顺序读取len个longs(有符号的64位整数),并将它们存储到从索引off开始的l中。如果到达流的末尾,将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 参数:
-
l- 要写入的longs数组。 -
off- 写入的起始位置在数组l内。 -
len- 要读取的最大longs数。 - 抛出:
-
IndexOutOfBoundsException- 如果off为负、len为负或off + len大于l.length。 -
NullPointerException- 如果l为null。 -
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。
-
readFully
从流中根据当前字节顺序读取len个floats(32位IEEE单精度浮点数),并将它们存储到从索引off开始的f中。如果到达流的末尾,将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 参数:
-
f- 要写入的floats数组。 -
off- 写入的起始位置在数组f内。 -
len- 要读取的最大floats数。 - 抛出:
-
IndexOutOfBoundsException- 如果off为负、len为负或off + len大于f.length。 -
NullPointerException- 如果f为null。 -
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。
-
readFully
从流中根据当前字节顺序读取len个doubles(64位IEEE双精度浮点数),并将它们存储到从索引off开始的d中。如果到达流的末尾,将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 参数:
-
d- 要写入的doubles数组。 -
off- 写入的起始位置在数组d内。 -
len- 要读取的最大doubles数。 - 抛出:
-
IndexOutOfBoundsException- 如果off为负、len为负或off + len大于d.length。 -
NullPointerException- 如果d为null。 -
EOFException- 如果在读取所有字节之前流到达末尾。 -
IOException- 如果发生I/O错误。
-
getStreamPosition
返回流的当前字节位置。下一次读取将从此偏移开始。- 返回:
- 包含流位置的 long 类型。
- 抛出:
-
IOException- 如果发生 I/O 错误。
-
getBitOffset
返回当前位偏移,作为介于 0 和 7 之间的整数。位偏移隐式地通过对readBits方法的调用进行更新。值为 0 表示正在读取的字节的最高有效位,值为 7 表示最低有效位。当流首次打开时,位偏移设置为 0,并且通过调用
seek、skipBytes或任何read或readFully方法时重置为 0。- 返回:
-
包含介于 0 和 7 之间的位偏移的
int类型。 - 抛出:
-
IOException- 如果发生 I/O 错误。 - 参见:
-
setBitOffset
将位偏移设置为介于 0 和 7 之间的整数。由getStreamPosition返回的流内字节偏移保持不变。值为 0 表示正在读取的字节的最高有效位,值为 7 表示最低有效位。- 参数:
-
bitOffset- 所需的偏移,作为介于 0 和 7 之间的int类型。 - 抛出:
-
IllegalArgumentException- 如果bitOffset不在介于 0 和 7 之间。 -
IOException- 如果发生 I/O 错误。 - 参见:
-
readBit
从流中读取单个位,并将其作为值为0或1的int类型返回。位偏移递增 1 并对 8 取模。- 返回:
-
包含值为
0或1的int类型。 - 抛出:
-
EOFException- 如果在读取所有位之前流到达末尾。 -
IOException- 如果发生 I/O 错误。
-
readBits
从流中读取位字符串,并将其作为long类型返回,其中第一个读取的位成为输出的最高有效位。读取从由getStreamPosition指示的字节开始,在由getBitOffset指示的位开始。位偏移递增numBits并对 8 取模。流的字节顺序对此方法没有影响。此方法的返回值构造方式是假设逐位读取位,并将其移位到返回值的右侧,如下伪代码所示:
因此,如果使用反向网络字节顺序(即long accum = 0L; for (int i = 0; i < numBits; i++) { accum <<= 1; // 向左移动一位以腾出空间 accum |= readBit(); }getByteOrder() == false),则readBits(32)的结果可能与readInt()的结果不相等。如果在读取所有位之前遇到流的末尾,则会抛出
java.io.EOFException。- 参数:
-
numBits- 要读取的位数,作为介于 0 和 64 之间的int类型。 - 返回:
-
位字符串,作为一个
long类型,其中最后读取的位存储在最低有效位中。 - 抛出:
-
IllegalArgumentException- 如果numBits不在介于 0 和 64 之间。 -
EOFException- 如果在读取所有位之前流到达末尾。 -
IOException- 如果发生 I/O 错误。
-
length
返回流的总长度,如果已知的话。否则,返回-1。- 返回:
-
包含流长度的
long类型,如果已知的话,否则返回-1。 - 抛出:
-
IOException- 如果发生 I/O 错误。
-
skipBytes
将流位置向前移动给定的字节数。可能情况下,此方法只能按请求的较小字节数向前跳过,例如如果到达流的末尾。在所有情况下,将返回实际跳过的字节数。在推进位置之前,位偏移设置为零。- 指定者:
-
skipBytes在接口DataInput - 参数:
-
n- 包含要跳过的字节数的int类型。 - 返回:
-
代表跳过的字节数的
int类型。 - 抛出:
-
IOException- 如果发生 I/O 错误。
-
skipBytes
将流位置向前移动给定的字节数。此方法与skipBytes(int)相同,只是允许更大的跳过距离。- 参数:
-
n- 包含要跳过的字节数的long类型。 - 返回:
-
代表跳过的字节数的
long类型。 - 抛出:
-
IOException- 如果发生 I/O 错误。
-
seek
将当前流位置设置为所需位置。下一次读取将在此位置发生。位偏移设置为 0。如果
pos小于刷新位置(由getflushedPosition返回),则将抛出IndexOutOfBoundsException。可以寻址文件的末尾;仅当执行读取时才会抛出
java.io.EOFException。- 参数:
-
pos- 包含所需文件指针位置的long类型。 - 抛出:
-
IndexOutOfBoundsException- 如果pos小于刷新位置。 -
IOException- 如果发生其他 I/O 错误。
-
mark
void mark()标记流中的位置,以便后续调用reset返回到该位置。与标准的InputStream不同,所有ImageInputStream都支持标记。此外,可以任意嵌套调用mark和reset。与
Reader和InputStream接口声明的mark方法不同,不使用readLimit参数。在调用mark后可以读取任意数量的数据。readBits方法使用的位位置由每对mark和reset调用保存和恢复。请注意,
ImageReader可能作为读取操作的一部分调用flushBefore。因此,如果应用程序在将该流传递给ImageReader之前调用mark,则应用程序不应假定在读取操作完成后标记的位置仍然有效。 -
reset
将流指针返回到最近未匹配调用mark时的先前位置,包括位偏移。没有对应调用
mark的reset调用不会产生任何效果。如果先前标记的位置位于流的丢弃部分,则将抛出
IOException。- 抛出:
-
IOException- 如果发生 I/O 错误。
-
flushBefore
丢弃流中指定位置之前的初始部分。尝试寻址到已刷新部分内的偏移将导致IndexOutOfBoundsException。调用
flushBefore可能允许实现此接口的类释放用于存储流数据的资源,如内存或磁盘空间。- 参数:
-
pos- 包含可能被刷新的流前缀的长度的long类型。 - 抛出:
-
IndexOutOfBoundsException- 如果pos位于已刷新部分内或超过当前流位置。 -
IOException- 如果发生 I/O 错误。
-
flush
丢弃流中当前流位置之前的初始位置。等效于flushBefore(getStreamPosition())。- 抛出:
-
IOException- 如果发生 I/O 错误。
-
getFlushedPosition
long getFlushedPosition()返回可执行寻址的流中最早的位置。返回值将是传递给之前所有调用flushBefore的值的最大值。- 返回:
-
可寻址的最早合法位置,作为一个
long类型。
-
isCached
boolean isCached()返回true如果这个ImageInputStream自己缓存数据以便允许向后查找。应用程序可以参考这一点来决定多频繁地刷新,或者是否刷新以节省缓存资源。- 返回:
-
如果这个
ImageInputStream缓存数据,则返回true。 - 参见:
-
isCachedMemory
boolean isCachedMemory()返回true如果这个ImageInputStream自己缓存数据以便允许向后查找,并且缓存保留在主内存中。应用程序可以参考这一点来决定多频繁地刷新,或者是否刷新以节省缓存资源。- 返回:
-
如果这个
ImageInputStream在主内存中缓存数据,则返回true。 - 参见:
-
isCachedFile
boolean isCachedFile()返回true如果这个ImageInputStream自己缓存数据以便允许向后查找,并且缓存保留在临时文件中。应用程序可以参考这一点来决定多频繁地刷新,或者是否刷新以节省缓存资源。- 返回:
-
如果这个
ImageInputStream在临时文件中缓存数据,则返回true。 - 参见:
-
close
关闭流。尝试访问已关闭的流可能导致IOException或不正确的行为。调用此方法可能允许实现此接口的类释放与流相关的资源,如内存、磁盘空间或文件描述符。- 指定者:
-
close在接口AutoCloseable - 指定者:
-
close在接口Closeable - 抛出:
-
IOException- 如果发生I/O错误。
-