- 所有超级接口:
-
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 TypeMethodDescriptionvoid
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()
从流中读取一个位并将其作为值为0
或1
的int
返回。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
个有符号64位整数,并将它们存储到从索引off
开始的l
中。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()
读取使用modified UTF-8
格式编码的字符串。void
reset()
将流指针设置回最近未匹配调用mark
时的先前位置,包括位偏移量。void
seek
(long pos) 将当前流位置设置为所需位置。void
setBitOffset
(int bitOffset) 将位偏移设置为介于0和7之间的整数。void
setByteOrder
(ByteOrder byteOrder) 为将来从该流中读取数据值设置所需的字节顺序。int
skipBytes
(int n) 将流位置向前移动给定的字节数。long
skipBytes
(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错误。
-