- java.lang.Object
-
- javax.imageio.stream.ImageInputStreamImpl
-
- All Implemented Interfaces:
-
Closeable
,DataInput
,AutoCloseable
,ImageInputStream
- 已知直接子类:
-
FileCacheImageInputStream
,FileImageInputStream
,ImageOutputStreamImpl
,MemoryCacheImageInputStream
public abstract class ImageInputStreamImpl extends Object implements ImageInputStream
一个实现ImageInputStream
接口的抽象类。 该类旨在减少子类必须实现的方法的数量。特别地,该类处理大部分或全部字节顺序解释,缓冲,标记/复位,丢弃,关闭和处理的细节。
-
-
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
与值0
或1
。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。
-
-
方法详细信息
-
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_ENDIAN
或java.nio.ByteOrder.LITTLE_ENDIAN
,表示网络字节顺序或其反向将用于将来读取。 - 另请参见:
-
ByteOrder
,ImageInputStream.getByteOrder()
,ImageInputStream.readBits(int)
-
getByteOrder
public ByteOrder getByteOrder()
描述从接口ImageInputStream
复制作为java.nio.ByteOrder
枚举的实例,返回从该流读取数据值的字节顺序。- Specified by:
-
getByteOrder
在接口ImageInputStream
- 结果
-
一个
ByteOrder.BIG_ENDIAN
或ByteOrder.LITTLE_ENDIAN
,指示正在使用哪个字节顺序。 - 另请参见:
-
ByteOrder
,ImageInputStream.setByteOrder(java.nio.ByteOrder)
-
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
- 如果b
是null
。 -
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
- 如果b
是null
。 -
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
值返回。0x00
和0x7f
之间的字节值表示0
和127
之间的整数值。0x80
和0xff
之间的值代表从-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
值返回。因此,
0x00
和0x7f
之间的字节值仅作为0
和127
之间的整数值返回。0x80
和0xff
之间的值通常表示负byte
值,将映射到128
和255
之间的正整数。在发生读取之前,流内的位偏移被重置为零。
- Specified by:
-
readUnsignedByte
在接口DataInput
- Specified by:
-
readUnsignedByte
在接口ImageInputStream
- 结果
- 来自流的无符号字节值。
- 异常
-
EOFException
- 如果到达流的末尾。 -
IOException
- 如果发生I / O错误。
-
readShort
public short readShort() throws IOException
描述从接口ImageInputStream
复制从流读取两个字节,(概念上)根据当前字节顺序连接它们,并将结果作为short
返回。在发生读取之前,流内的位偏移被重置为零。
- Specified by:
-
readShort
在接口DataInput
- Specified by:
-
readShort
在接口ImageInputStream
- 结果
- 从流中签名的短值。
- 异常
-
EOFException
- 如果流在读取所有字节之前到达结束。 -
IOException
- 如果发生I / O错误。 - 另请参见:
-
ImageInputStream.getByteOrder()
-
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()
-
readChar
public char readChar() throws IOException
描述从接口ImageInputStream
复制相当于readUnsignedShort
,除了使用char
数据类型返回结果。在发生读取之前,流内的位偏移被重置为零。
- Specified by:
-
readChar
在接口DataInput
- Specified by:
-
readChar
在接口ImageInputStream
- 结果
- 来自流的无符号字符值。
- 异常
-
EOFException
- 如果流在读取所有字节之前到达结束。 -
IOException
- 如果发生I / O错误。 - 另请参见:
-
ImageInputStream.readUnsignedShort()
-
readInt
public int readInt() throws IOException
说明从接口ImageInputStream
复制从流中读取4个字节,(在概念上)根据当前字节顺序连接它们,并将结果作为int
返回。流内的位偏移被忽略,并被视为零。
- Specified by:
-
readInt
在接口DataInput
- Specified by:
-
readInt
接口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()
-
readLong
public long readLong() throws IOException
描述从接口ImageInputStream
复制从流中读取8个字节,(在概念上)根据当前字节顺序连接它们,并将结果作为long
返回。在发生读取之前,流内的位偏移被重置为零。
- Specified by:
-
readLong
在接口DataInput
- Specified by:
-
readLong
在接口ImageInputStream
- 结果
- 从流中签名的长值。
- 异常
-
EOFException
- 如果流在读取所有字节之前到达结束。 -
IOException
- 如果发生I / O错误。 - 另请参见:
-
ImageInputStream.getByteOrder()
-
readFloat
public float readFloat() throws IOException
描述从接口ImageInputStream
复制从流中读取4个字节,(在概念上)根据当前字节顺序连接它们,并将结果作为float
返回。在发生读取之前,流内的位偏移被重置为零。
- Specified by:
-
readFloat
在接口DataInput
- Specified by:
-
readFloat
在接口ImageInputStream
- 结果
- 来自流的浮点值。
- 异常
-
EOFException
- 如果流在读取所有字节之前到达结束。 -
IOException
- 如果发生I / O错误。 - 另请参见:
-
ImageInputStream.getByteOrder()
-
readDouble
public double readDouble() throws IOException
描述从接口ImageInputStream
复制从流中读取8个字节,(在概念上)根据当前字节顺序连接它们,并将结果作为double
返回。在发生读取之前,流内的位偏移被重置为零。
- Specified by:
-
readDouble
在接口DataInput
- Specified by:
-
readDouble
在接口ImageInputStream
- 结果
- 来自流的双重值。
- 异常
-
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
表示“可能是0
或1
”)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不兼容。
- 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错误。
-
getStreamPosition
public long getStreamPosition() throws IOException
描述从接口ImageInputStream
复制返回流的当前字节位置。 下一次读取将从此偏移开始。- Specified by:
-
getStreamPosition
在接口ImageInputStream
- 结果
- 一个长的包含流的位置。
- 异常
-
IOException
- 如果发生I / O错误。
-
getBitOffset
public int getBitOffset() throws IOException
描述从接口ImageInputStream
复制返回当前的位偏移量,为0到7之间的整数,包括0和7。 通过调用readBits
方法隐式更新位偏移。 值为0表示最高有效位,值为7表示正在读取的字节的最低有效位。位偏移量被设置为0时,流被第一次打开,并且通过调用复位为0至
seek
,skipBytes
,或任何read
或readFully
方法。- 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
返回,值为0
或1
。 位偏移前进一并减少模8。- Specified by:
-
readBit
在接口ImageInputStream
- 结果
-
一个
int
,其值包含0
或1
。 - 异常
-
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错误。
-
flush
public void flush() throws IOException
说明从界面ImageInputStream
复制在当前流位置之前丢弃流的初始位置。 相当于flushBefore(getStreamPosition())
。- Specified by:
-
flush
在接口ImageInputStream
- 异常
-
IOException
- 如果发生I / O错误。
-
getFlushedPosition
public long getFlushedPosition()
说明从接口ImageInputStream
复制返回可以执行搜索的流中的最早位置。 返回的值将是传递到先前调用的所有值的最大值为flushBefore
。- Specified by:
-
getFlushedPosition
在接口ImageInputStream
- 结果
-
最早寻求法定职位,作为
long
。
-
isCached
public boolean isCached()
默认实现返回false。 如果子类缓存数据,子类应该重写。- Specified by:
-
isCached
在接口ImageInputStream
- 结果
-
true
如果这个ImageInputStream
缓存数据。 - 另请参见:
-
ImageInputStream.isCachedMemory()
,ImageInputStream.isCachedFile()
-
isCachedMemory
public boolean isCachedMemory()
默认实现返回false。 子类应该在主存中缓存数据时重写。- Specified by:
-
isCachedMemory
在接口ImageInputStream
- 结果
-
true
如果这个ImageInputStream
缓存数据在主内存中。 - 另请参见:
-
ImageInputStream.isCached()
,ImageInputStream.isCachedFile()
-
isCachedFile
public boolean isCachedFile()
默认实现返回false。 如果子类缓存临时文件中的数据,子类应该重写。- Specified by:
-
isCachedFile
在接口ImageInputStream
- 结果
-
true
如果这个ImageInputStream
缓存数据在临时文件中。 - 另请参见:
-
ImageInputStream.isCached()
,ImageInputStream.isCachedMemory()
-
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
方法来关闭任何打开的输入源。 不应该从应用程序代码调用此方法。- 重写:
-
finalize
在Object
- 异常
-
Throwable
- 如果在超类最终化期间发生错误。 - 另请参见:
-
WeakReference
,PhantomReference
-
-