java.lang.Objectjavax.imageio.stream.ImageInputStreamImpl
public abstract class ImageInputStreamImpl
实现 ImageInputStream 接口的抽象类。此类设计用于减少必须由子类实现的方法数。
需要特别指出的是,此类处理大部分或全部关于字节顺序解释、缓冲、标记/重置、丢弃、关闭和释放的详细资料。
| 字段摘要 | |
|---|---|
protected int |
bitOffset 流中的当前位偏移量。 |
protected ByteOrder |
byteOrder 流的字节顺序,其为枚举类 java.nio.ByteOrder 的实例,其中 ByteOrder.BIG_ENDIAN 指示网络字节顺序,ByteOrder.LITTLE_ENDIAN 指示反向顺序。 |
protected long |
flushedPos 可能丢弃的数据前面的那个位置。 |
protected long |
streamPos 流中的当前读取位置。 |
| 构造方法摘要 | |
|---|---|
ImageInputStreamImpl() 构造一个 ImageInputStreamImpl。 |
|
| 方法摘要 | |
|---|---|
protected void |
checkClosed() 如果已经关闭流,则抛出 IOException。 |
void |
close() 关闭流。 |
protected void |
finalize() 在垃圾回收前结束此对象。 |
void |
flush() 丢弃当前流位置之前的流初始部分。 |
void |
flushBefore(long pos) 丢弃所指示位置之前的流初始部分。 |
int |
getBitOffset() 以整数的形式返回当前位偏移量,该整数在 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(0 到 255 之间)形式返回该字节。 |
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() 从流中读取一个字节,如果其不为 0,则返回 boolean 值 true;如果为 0,则返回 false。 |
byte |
readByte() 从流中读取一个字节,并以 byte 值的形式返回该字节。 |
void |
readBytes(IIOByteBuffer buf, int len) 从流中读取至多 len 个字节,并修改提供的 IIOByteBuffer 以指示可以找到数据的 byte 数组、偏移量和长度。 |
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 个 char(无符号 16 位整数),并将其存储到 c 中(从索引 off 开始)。 |
void |
readFully(double[] d, int off, int len) 根据当前字节顺序从流中读取 len 个 double(64 位 IEEE 双精度浮点值),并将其存储到 d 中(从索引 off 开始)。 |
void |
readFully(float[] f, int off, int len) 根据当前字节顺序从流中读取 len 个 float(32 位 IEEE 单精度浮点值),并将其存储到 f 中(从索引 off 开始)。 |
void |
readFully(int[] i, int off, int len) 根据当前字节顺序从流中读取 len 个 int(有符号 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 个 short(有符号 16 位整数),并将其存储到 s 中(从索引 off 开始)。 |
int |
readInt() 从流中读取 4 个字节,根据当前字节顺序将其连接(概念上),然后以 int 值的形式返回结果。 |
String |
readLine() 从输入流中读取文本的下一行。 |
long |
readLong() 从流中读取 8 个字节,根据当前字节顺序将其连接(概念上),然后以 long 值的形式返回结果。 |
short |
readShort() 从流中读取两个字节,根据当前字节顺序将其连接(概念上),然后以 short 值的形式返回结果。 |
int |
readUnsignedByte() 从流中读取一个字节,将其转换为 int(概念上),使用 0xff 屏蔽以便去掉所有符号扩展位,然后以 byte 值的形式返回。 |
long |
readUnsignedInt() 从流中读取 4 个字节,根据当前字节顺序将其连接(概念上),将得到的值转换为 long,使用 0xffffffffL 屏蔽以便去掉所有符号扩展位,然后以无符号 long 值的形式返回结果。 |
int |
readUnsignedShort() 从流中读取两个字节,根据当前字节顺序将其连接(概念上),将得到的值转换为 int,使用 0xffff 屏蔽以便去掉所有符号扩展位,然后以无符号 int 值的形式返回结果。 |
String |
readUTF() 读入一个已使用 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) 推进当前流位置。 |
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 字段详细信息 |
|---|
protected ByteOrder byteOrder
java.nio.ByteOrder 的实例,其中
ByteOrder.BIG_ENDIAN 指示网络字节顺序,
ByteOrder.LITTLE_ENDIAN 指示反向顺序。默认情况下,该值为
ByteOrder.BIG_ENDIAN。
protected long streamPos
protected int bitOffset
protected long flushedPos
flushedPos 将总是 >= 0。
| 构造方法详细信息 |
|---|
public ImageInputStreamImpl()
ImageInputStreamImpl。
| 方法详细信息 |
|---|
protected final void checkClosed()
throws IOException
IOException。子类可以从其任何要求不关闭流的方法中调用此方法。
IOException - 如果已关闭流。
public void setByteOrder(ByteOrder byteOrder)
ImageInputStream 复制的描述
枚举类 java.nio.ByteOrder 用于指定字节顺序。值 ByteOrder.BIG_ENDIAN 指定所谓的 big-endian 或网络字节顺序,该顺序中高位字节在前。Motorola 和 Sparc 处理器用此格式存储数据,而 Intel 处理器使用与之相反的 ByteOrder.LITTLE_ENDIAN 顺序存储数据。
字节顺序对 readBits 方法返回的结果(或 ImageOutputStream.writeBits 写入的值)没有任何影响。
ImageInputStream 中的
setByteOrder
byteOrder -
ByteOrder.BIG_ENDIAN 或
java.nio.ByteOrder.LITTLE_ENDIAN,指示以后读取时是使用网络顺序还是使用与之相反的顺序。
ByteOrder,
ImageInputStream.getByteOrder(),
ImageInputStream.readBits(int)
public ByteOrder getByteOrder()
ImageInputStream 复制的描述
java.nio.ByteOrder 枚举实例的形式返回从此流中读取数据值时所使用的字节顺序。
ImageInputStream 中的
getByteOrder
ByteOrder.BIG_ENDIAN 或
ByteOrder.LITTLE_ENDIAN,指示要使用的字节顺序。
ByteOrder,
ImageInputStream.setByteOrder(java.nio.ByteOrder)
public abstract int read()
throws IOException
int(0 到 255 之间)形式返回该字节。 如果到达 EOF,则返回
-1。
子类必须提供此方法的实现。子类实现在退出前应该更新流位置。
在发生读取前,流中的位偏移量必须被重置为 0。
ImageInputStream 中的
read
-1。
IOException - 如果流已经被关闭。
public int read(byte[] b)
throws IOException
read(b, 0, b.length) 的便捷方法。
在发生读取前,流中的位偏移量被重置为 0。
ImageInputStream 中的
read
b - 用来接收写入的 byte 数组。
-1,指示 EOF。
NullPointerException - 如果
b 为
null。
IOException - 如果发生 I/O 错误。
public abstract int read(byte[] b,
int off,
int len)
throws IOException
len 个字节,并将其存储到
b 中(从
off 索引处开始)。如果由于到达流末尾而没有读取任何字节,则返回
-1。
在发生读取前,流中的位偏移量必须被重置为 0。
子类必须提供此方法的实现。子类实现在退出前应该更新流位置。
ImageInputStream 中的
read
b - 用来接收写入的字节数组。
off -
b 中要写入的起始位置。
len - 要读取的最大字节数。
-1,指示 EOF。
IndexOutOfBoundsException - 如果
off 为负、
len 为负或者
off + len 大于
b.length。
NullPointerException - 如果
b 为
null。
IOException - 如果发生 I/O 错误。
public void readBytes(IIOByteBuffer buf, int len) throws IOException
ImageInputStream 复制的描述
len 个字节,并修改提供的
IIOByteBuffer 以指示可以找到数据的 byte 数组、偏移量和长度。调用者不应该试图修改
IIOByteBuffer 中找到的数据。
在进行读取前,流中的位偏移量被重置为 0。
ImageInputStream 中的
readBytes
buf - 要修改的 IIOByteBuffer 对象。
len - 要读取的最大
byte 数。
IOException - 如果发生 I/O 错误。
public boolean readBoolean()
throws IOException
ImageInputStream 复制的描述
boolean 值
true;如果为 0,则返回
false。
在进行读取前,流中的位偏移量被重置为 0。
DataInput 中的
readBoolean
ImageInputStream 中的
readBoolean
EOFException - 如果到达流末尾。
IOException - 如果发生 I/O 错误。
public byte readByte()
throws IOException
ImageInputStream 复制的描述
byte 值的形式返回该字节。
0x00 到
0x7f 之间的字节值表示
0 到
127 之间的整数值。
0x80 到
0xff 之间的字节值表示
-128 到
-1 之间的负整数值。
在进行读取前,流中的位偏移量被重置为 0。
DataInput 中的
readByte
ImageInputStream 中的
readByte
EOFException - 如果到达流末尾。
IOException - 如果发生 I/O 错误。
public int readUnsignedByte()
throws IOException
ImageInputStream 复制的描述
0xff 屏蔽以便去掉所有符号扩展位,然后以
byte 值的形式返回。
于是,0x00 到 0x7f 之间的字节值便作为 0 到 127 之间的整数值返回。0x80 到 0xff 之间的字节值通常表示为负的 byte 值,它们将被映射成 128 到 255 之间的正整数。
在进行读取前,流中的位偏移量被重置为 0。
DataInput 中的
readUnsignedByte
ImageInputStream 中的
readUnsignedByte
EOFException - 如果到达流末尾。
IOException - 如果发生 I/O 错误。
public short readShort()
throws IOException
ImageInputStream 复制的描述
short 值的形式返回结果。
在进行读取前,流中的位偏移量被重置为 0。
DataInput 中的
readShort
ImageInputStream 中的
readShort
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
ImageInputStream.getByteOrder()
public int readUnsignedShort()
throws IOException
ImageInputStream 复制的描述
int,使用
0xffff 屏蔽以便去掉所有符号扩展位,然后以无符号
int 值的形式返回结果。
在进行读取前,流中的位偏移量被重置为 0。
DataInput 中的
readUnsignedShort
ImageInputStream 中的
readUnsignedShort
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
ImageInputStream.getByteOrder()
public char readChar()
throws IOException
ImageInputStream 复制的描述
readUnsignedShort 等效,唯一的不同在于它的结果使用
char 数据类型返回。
在进行读取前,流中的位偏移量被重置为 0。
DataInput 中的
readChar
ImageInputStream 中的
readChar
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
ImageInputStream.readUnsignedShort()
public int readInt()
throws IOException
ImageInputStream 复制的描述
int 值的形式返回结果。
忽略流中的位偏移量,将其视为 0。
DataInput 中的
readInt
ImageInputStream 中的
readInt
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
ImageInputStream.getByteOrder()
public long readUnsignedInt()
throws IOException
ImageInputStream 复制的描述
0xffffffffL 屏蔽以便去掉所有符号扩展位,然后以无符号
long 值的形式返回结果。
在进行读取前,流中的位偏移量被重置为 0。
ImageInputStream 中的
readUnsignedInt
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
ImageInputStream.getByteOrder()
public long readLong()
throws IOException
ImageInputStream 复制的描述
long 值的形式返回结果。
在进行读取前,流中的位偏移量被重置为 0。
DataInput 中的
readLong
ImageInputStream 中的
readLong
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
ImageInputStream.getByteOrder()
public float readFloat()
throws IOException
ImageInputStream 复制的描述
float 值的形式返回结果。
在进行读取前,流中的位偏移量被重置为 0。
DataInput 中的
readFloat
ImageInputStream 中的
readFloat
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
ImageInputStream.getByteOrder()
public double readDouble()
throws IOException
ImageInputStream 复制的描述
double 值的形式返回结果。
在进行读取前,流中的位偏移量被重置为 0。