- 所有父级接口:
AutoCloseable
,Closeable
,DataInput
- 所有已知的子接口:
ImageOutputStream
- 所有已知的实现类:
FileCacheImageInputStream
,FileCacheImageOutputStream
,FileImageInputStream
,FileImageOutputStream
,ImageInputStreamImpl
,ImageOutputStreamImpl
,MemoryCacheImageInputStream
,MemoryCacheImageOutputStream
ImageReader
s 使用的可搜索输入流接口。各种输入源,例如 InputStream
s 和 File
s,以及未来的快速 I/O 源可能被这个接口的合适实现“包装”以供 Image I/O API 使用。
- 参见:
-
方法总结
修饰符和类型方法描述void
close()
关闭流。void
flush()
丢弃当前流位置之前的流的初始位置。void
flushBefore
(long pos) 丢弃指示位置之前的流的初始部分。int
返回当前位偏移量,作为 0 到 7 之间的整数,包括 0 和 7。返回字节顺序,作为java.nio.ByteOrder
枚举的实例,数据值将以此字节顺序从该流中读取。long
返回可以执行查找的流中最早的位置。long
返回流的当前字节位置。boolean
isCached()
如果此ImageInputStream
缓存数据本身以允许向后查找,则返回true
。boolean
如果此ImageInputStream
缓存数据本身以允许向后查找,则返回true
,并且缓存保存在临时文件中。boolean
如果此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
个字节,并将它们存储到从索引off
开始的b
中。int
readBit()
从流中读取单个位并将其作为int
返回,其值为0
或1
。long
readBits
(int numBits) 从流中读取一个位串并将其作为long
返回,读取的第一位成为输出的最高有效位。boolean
从流中读取一个字节并返回boolean
值true
如果它是非零,则返回false
如果它是零。byte
readByte()
从流中读取一个字节并将其作为byte
值返回。void
readBytes
(IIOByteBuffer buf, int len) 从流中读取最多len
个字节,并修改提供的IIOByteBuffer
以指示可以找到数据的字节数组、偏移量和长度。char
readChar()
等同于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
longs(带符号的 64 位整数),并将它们存储到l
从索引off
开始。void
readFully
(short[] s, int off, int len) 根据当前字节顺序从流中读取len
短裤(带符号的 16 位整数),并将它们存储到从索引off
开始的s
中。int
readInt()
从流中读取 4 个字节,并(概念上)根据当前字节顺序连接它们并将结果作为int
返回。readLine()
从输入流中读取下一行文本。long
readLong()
从流中读取 8 个字节,并(概念上)根据当前字节顺序连接它们并将结果作为long
返回。short
从流中读取两个字节,并(概念上)根据当前字节顺序将它们连接起来,并将结果作为short
值返回。int
从流中读取一个字节,并(概念上)将其转换为 int,用0xff
对其进行屏蔽以去除任何符号扩展位,并将其作为byte
值返回。long
从流中读取 4 个字节,并(概念上)根据当前字节顺序将它们连接起来,将结果转换为 long,使用0xffffffffL
对其进行屏蔽以去除任何符号扩展位,并将结果作为无符号long
返回值。int
从流中读取两个字节,并(概念上)根据当前字节顺序将它们连接起来,将结果值转换为int
,使用0xffff
对其进行屏蔽以去除任何符号扩展但,并将结果作为无符号返回int
值。readUTF()
读入使用 修改后的 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
为将来从此流中读取数据值设置所需的字节顺序。例如,字节序列“0x01 0x02 0x03 0x04”如果读取为 4 字节整数,则使用网络字节顺序将具有值“0x01020304”,在反向字节顺序下将具有值“0x04030201”。枚举类
java.nio.ByteOrder
用于指定字节顺序。ByteOrder.BIG_ENDIAN
的值指定所谓的 big-endian 或网络字节顺序,其中高位字节在前。摩托罗拉和 Sparc 处理器以这种格式存储数据,而英特尔处理器以相反的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
- 要读取的最大byte
数。- 返回:
-
实际读取的字节数,或
-1
表示 EOF。 - 抛出:
NullPointerException
- 如果b
是null
。IndexOutOfBoundsException
- 如果off
为负,len
为负,或off + len
大于b.length
。IOException
- 如果发生 I/O 错误。
-
readBytes
从流中读取最多len
个字节,并修改提供的IIOByteBuffer
以指示可以找到数据的字节数组、偏移量和长度。调用者不应尝试修改在IIOByteBuffer
中找到的数据。在读取发生之前,流中的位偏移量被重置为零。
- 参数:
buf
- 要修改的 IIOByteBuffer 对象。len
- 要读取的最大byte
数。- 抛出:
IndexOutOfBoundsException
- 如果len
为负。NullPointerException
- 如果buf
是null
。IOException
- 如果发生 I/O 错误。
-
readBoolean
从流中读取一个字节并返回boolean
值true
如果它是非零,则返回false
如果它是零。在读取发生之前,流中的位偏移量被重置为零。
- 指定者:
readBoolean
在接口DataInput
中- 返回:
- 来自流的boolean。
- 抛出:
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
中- 返回:
- 来自流的 unsigned char 值。
- 抛出:
EOFException
- 如果流在读取所有字节之前到达末尾。IOException
- 如果发生 I/O 错误。- 参见:
-
readInt
从流中读取 4 个字节,并(概念上)根据当前字节顺序连接它们并将结果作为int
返回。流中的位偏移量被忽略并被视为零。
- 指定者:
readInt
在接口DataInput
中- 返回:
- 来自流的有符号整数值。
- 抛出:
EOFException
- 如果流在读取所有字节之前到达末尾。IOException
- 如果发生 I/O 错误。- 参见:
-
readUnsignedInt
从流中读取 4 个字节,并(概念上)根据当前字节顺序将它们连接起来,将结果转换为 long,使用0xffffffffL
对其进行屏蔽以去除任何符号扩展位,并将结果作为无符号long
返回值。在读取发生之前,流中的位偏移量被重置为零。
- 返回:
- 来自流的 unsigned int 值,作为 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
返回。首先,读取两个字节并将其用于以
readUnsignedShort
方法的方式构造一个无符号的 16 位整数,使用网络字节顺序(无论当前字节顺序设置如何)。这个整数值称为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
并返回。当前字节顺序设置将被忽略。
在读取发生之前,流中的位偏移量被重置为零。
Note:该方法不应该用于使用标准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
- 要读取的最大byte
数。- 抛出:
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
短裤(带符号的 16 位整数),并将它们存储到从索引off
开始的s
中。如果到达流的末尾,将抛出java.io.EOFException
。在读取发生之前,流中的位偏移量被重置为零。
- 参数:
s
- 要写入的短裤数组。off
-s
中要写入的起始位置。len
- 要读取的最大short
数。- 抛出:
IndexOutOfBoundsException
- 如果off
为负,len
为负,或者off + len
大于s.length
。NullPointerException
- 如果s
是null
。EOFException
- 如果流在读取所有字节之前到达末尾。IOException
- 如果发生 I/O 错误。
-
readFully
根据当前字节顺序从流中读取len
个字符(无符号 16 位整数),并将它们存储到从索引off
开始的c
中。如果到达流的末尾,将抛出java.io.EOFException
。在读取发生之前,流中的位偏移量被重置为零。
- 参数:
c
- 要写入的字符数组。off
-c
中要写入的起始位置。len
- 要读取的最大char
数。- 抛出:
IndexOutOfBoundsException
- 如果off
为负,len
为负,或者off + len
大于c.length
。NullPointerException
- 如果c
是null
。EOFException
- 如果流在读取所有字节之前到达末尾。IOException
- 如果发生 I/O 错误。
-
readFully
根据当前字节顺序从流中读取len
整数(带符号的 32 位整数),并将它们存储到从索引off
开始的i
中。如果到达流的末尾,将抛出java.io.EOFException
。在读取发生之前,流中的位偏移量被重置为零。
- 参数:
i
- 要写入的整数数组。off
-i
中要写入的起始位置。len
- 要读取的最大int
数。- 抛出:
IndexOutOfBoundsException
- 如果off
为负,len
为负,或off + len
大于i.length
。NullPointerException
- 如果i
是null
。EOFException
- 如果流在读取所有字节之前到达末尾。IOException
- 如果发生 I/O 错误。
-
readFully
根据当前字节顺序从流中读取len
longs(带符号的 64 位整数),并将它们存储到l
从索引off
开始。如果到达流的末尾,将抛出java.io.EOFException
。在读取发生之前,流中的位偏移量被重置为零。
- 参数:
l
- 要写入的 longs 数组。off
-l
中要写入的起始位置。len
- 要读取的最大long
数。- 抛出:
IndexOutOfBoundsException
- 如果off
为负,len
为负,或off + len
大于l.length
。NullPointerException
- 如果l
是null
。EOFException
- 如果流在读取所有字节之前到达末尾。IOException
- 如果发生 I/O 错误。
-
readFully
根据当前字节顺序从流中读取len
浮点数(32 位 IEEE 单精度浮点数),并将它们存储到从索引off
开始的f
中。如果到达流的末尾,将抛出java.io.EOFException
。在读取发生之前,流中的位偏移量被重置为零。
- 参数:
f
- 要写入的浮点数组。off
-f
中要写入的起始位置。len
- 要读取的最大float
数。- 抛出:
IndexOutOfBoundsException
- 如果off
为负,len
为负,或off + len
大于f.length
。NullPointerException
- 如果f
是null
。EOFException
- 如果流在读取所有字节之前到达末尾。IOException
- 如果发生 I/O 错误。
-
readFully
根据当前字节顺序从流中读取len
双精度数(64 位 IEEE 双精度浮点数),并将它们存储到从索引off
开始的d
中。如果到达流的末尾,将抛出java.io.EOFException
。在读取发生之前,流中的位偏移量被重置为零。
- 参数:
d
- 要写入的双精度数组。off
-d
中要写入的起始位置。len
- 要读取的最大double
数。- 抛出:
IndexOutOfBoundsException
- 如果off
为负,len
为负,或off + len
大于d.length
。NullPointerException
- 如果d
是null
。EOFException
- 如果流在读取所有字节之前到达末尾。IOException
- 如果发生 I/O 错误。
-
getStreamPosition
返回流的当前字节位置。下一次读取将从该偏移量开始。- 返回:
- 包含流位置的 long。
- 抛出:
IOException
- 如果发生 I/O 错误。
-
getBitOffset
返回当前位偏移量,作为 0 到 7 之间的整数,包括 0 和 7。位偏移量通过调用readBits
方法隐式更新。值 0 表示最高有效位,值 7 表示正在读取的字节的最低有效位。首次打开流时,位偏移设置为 0,并通过调用
seek
、skipBytes
或任何read
或readFully
方法重置为 0。- 返回:
int
包含 0 到 7 之间的位偏移量,包括 0 和 7。- 抛出:
IOException
- 如果发生 I/O 错误。- 参见:
-
setBitOffset
将位偏移量设置为介于 0 和 7 之间的整数,包括 0 和 7。getStreamPosition
返回的流中的字节偏移量保持不变。值 0 表示最高有效位,值 7 表示正在读取的字节的最低有效位。- 参数:
bitOffset
- 所需的偏移量,作为 0 到 7 之间的int
,包括在内。- 抛出:
IllegalArgumentException
- 如果bitOffset
不在 0 和 7 之间,包括 0 和 7。IOException
- 如果发生 I/O 错误。- 参见:
-
readBit
从流中读取单个位并将其作为int
返回,其值为0
或1
。位偏移量提前 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; // Shift left one bit to make room accum |= readBit(); }
getByteOrder() == false
),readBits(32)
的结果可能因此不等于readInt()
的结果。如果在读取所有位之前遇到流的末尾,则会抛出
java.io.EOFException
。- 参数:
numBits
- 要读取的位数,作为 0 到 64 之间的int
,包括在内。- 返回:
-
位串,作为
long
,最后读取的位存储在最低有效位中。 - 抛出:
IllegalArgumentException
- 如果numBits
不在 0 到 64 之间,包括 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()如果此ImageInputStream
缓存数据本身以允许向后查找,则返回true
。应用程序可能会参考它来决定刷新的频率或是否刷新以节省缓存资源。- 返回:
true
如果这个ImageInputStream
缓存数据。- 参见:
-
isCachedMemory
boolean isCachedMemory()如果此ImageInputStream
缓存数据本身以允许向后查找,并且缓存保存在主内存中,则返回true
。应用程序可能会参考它来决定刷新的频率或是否刷新以节省缓存资源。- 返回:
true
如果这个ImageInputStream
在主内存中缓存数据。- 参见:
-
isCachedFile
boolean isCachedFile()如果此ImageInputStream
缓存数据本身以允许向后查找,则返回true
,并且缓存保存在临时文件中。应用程序可能会参考它来决定刷新的频率或是否刷新以节省缓存资源。- 返回:
true
如果此ImageInputStream
将数据缓存在临时文件中。- 参见:
-
close
关闭流。尝试访问已关闭的流可能会导致IOException
或不正确的行为。调用此方法可能允许实现此接口的类释放与流关联的资源,例如内存、磁盘空间或文件描述符。- 指定者:
close
在接口AutoCloseable
中- 指定者:
close
在接口Closeable
中- 抛出:
IOException
- 如果发生 I/O 错误。
-