javax.imageio.stream

接口
java.lang.Object
  继承者 javax.imageio.stream.ImageInputStreamImpl
所有已实现的接口:
DataInput, ImageInputStream
直接已知子类:
FileCacheImageInputStream, FileImageInputStream, ImageOutputStreamImpl, MemoryCacheImageInputStream

public abstract class ImageInputStreamImpl
     
extends Object
implements ImageInputStream

实现 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()
          从流中读取单个字节,并以 int01)的形式返回该字节。
 long readBits(int numBits)
          从流中读取位串 (bitstring) 并以 long 的形式返回,使第一个读取的位成为输出的最高有效位。
 boolean readBoolean()
          从流中读取一个字节,如果其不为 0,则返回 booleantrue;如果为 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
 

字段详细信息

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。

构造方法详细信息

ImageInputStreamImpl

public ImageInputStreamImpl()
构造一个 ImageInputStreamImpl

方法详细信息

checkClosed

protected final void checkClosed()
                          throws IOException
如果已经关闭流,则抛出 IOException。子类可以从其任何要求不关闭流的方法中调用此方法。

抛出:
IOException - 如果已关闭流。

setByteOrder

public void setByteOrder(ByteOrder byteOrder)
从接口 ImageInputStream 复制的描述
设置希望以后从此流中读取数据值时使用的字节顺序。例如,如果以 4 字节整数形式读取字节序列 '0x01 0x02 0x03 0x04',则使用网络字节顺序时结果为值 '0x01020304',使用逆向字节顺序时为值 '0x04030201'。

枚举类 java.nio.ByteOrder 用于指定字节顺序。值 ByteOrder.BIG_ENDIAN 指定所谓的 big-endian 或网络字节顺序,该顺序中高位字节在前。Motorola 和 Sparc 处理器用此格式存储数据,而 Intel 处理器使用与之相反的 ByteOrder.LITTLE_ENDIAN 顺序存储数据。

字节顺序对 readBits 方法返回的结果(或 ImageOutputStream.writeBits 写入的值)没有任何影响。

指定者:
接口 ImageInputStream 中的 setByteOrder
参数:
byteOrder - ByteOrder.BIG_ENDIANjava.nio.ByteOrder.LITTLE_ENDIAN,指示以后读取时是使用网络顺序还是使用与之相反的顺序。
另请参见:
ByteOrder, ImageInputStream.getByteOrder(), ImageInputStream.readBits(int)

getByteOrder

public ByteOrder getByteOrder()
从接口 ImageInputStream 复制的描述
java.nio.ByteOrder 枚举实例的形式返回从此流中读取数据值时所使用的字节顺序。

指定者:
接口 ImageInputStream 中的 getByteOrder
返回:
ByteOrder.BIG_ENDIANByteOrder.LITTLE_ENDIAN,指示要使用的字节顺序。
另请参见:
ByteOrder, ImageInputStream.setByteOrder(java.nio.ByteOrder)

read

public abstract int read()
                  throws IOException
从流中读取单个字节,并以 int(0 到 255 之间)形式返回该字节。 如果到达 EOF,则返回 -1

子类必须提供此方法的实现。子类实现在退出前应该更新流位置。

在发生读取前,流中的位偏移量必须被重置为 0。

指定者:
接口 ImageInputStream 中的 read
返回:
流中下一个字节的值;如果到达 EOF,则返回 -1
抛出:
IOException - 如果流已经被关闭。

read

public int read(byte[] b)
         throws IOException
调用 read(b, 0, b.length) 的便捷方法。

在发生读取前,流中的位偏移量被重置为 0。

指定者:
接口 ImageInputStream 中的 read
参数:
b - 用来接收写入的 byte 数组。
返回:
实际读取的字节数;或者 -1,指示 EOF。
抛出:
NullPointerException - 如果 bnull
IOException - 如果发生 I/O 错误。

read

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 - 如果 bnull
IOException - 如果发生 I/O 错误。

readBytes

public void readBytes(IIOByteBuffer buf,
                      int len)
               throws IOException
从接口 ImageInputStream 复制的描述
从流中读取至多 len 个字节,并修改提供的 IIOByteBuffer 以指示可以找到数据的 byte 数组、偏移量和长度。调用者不应该试图修改 IIOByteBuffer 中找到的数据。

在进行读取前,流中的位偏移量被重置为 0。

指定者:
接口 ImageInputStream 中的 readBytes
参数:
buf - 要修改的 IIOByteBuffer 对象。
len - 要读取的最大 byte 数。
抛出:
IOException - 如果发生 I/O 错误。

readBoolean

public boolean readBoolean()
                    throws IOException
从接口 ImageInputStream 复制的描述
从流中读取一个字节,如果其不为 0,则返回 booleantrue;如果为 0,则返回 false

在进行读取前,流中的位偏移量被重置为 0。

指定者:
接口 DataInput 中的 readBoolean
指定者:
接口 ImageInputStream 中的 readBoolean
返回:
取自流的 boolean 值。
抛出:
EOFException - 如果到达流末尾。
IOException - 如果发生 I/O 错误。

readByte

public byte readByte()
              throws IOException
从接口 ImageInputStream 复制的描述
从流中读取一个字节,并以 byte 值的形式返回该字节。 0x000x7f 之间的字节值表示 0127 之间的整数值。 0x800xff 之间的字节值表示 -128-1 之间的负整数值。

在进行读取前,流中的位偏移量被重置为 0。

指定者:
接口 DataInput 中的 readByte
指定者:
接口 ImageInputStream 中的 readByte
返回:
取自流的单个字节值。
抛出:
EOFException - 如果到达流末尾。
IOException - 如果发生 I/O 错误。

readUnsignedByte

public int readUnsignedByte()
                     throws IOException
从接口 ImageInputStream 复制的描述
从流中读取一个字节,将其转换为 int(概念上),使用 0xff 屏蔽以便去掉所有符号扩展位,然后以 byte 值的形式返回。

于是,0x000x7f 之间的字节值便作为 0127 之间的整数值返回。0x800xff 之间的字节值通常表示为负的 byte 值,它们将被映射成 128255 之间的正整数。

在进行读取前,流中的位偏移量被重置为 0。

指定者:
接口 DataInput 中的 readUnsignedByte
指定者:
接口 ImageInputStream 中的 readUnsignedByte
返回:
取自流的无符号 byte 值。
抛出:
EOFException - 如果到达流末尾。
IOException - 如果发生 I/O 错误。

readShort

public short readShort()
                throws IOException
从接口 ImageInputStream 复制的描述
从流中读取两个字节,根据当前字节顺序将其连接(概念上),然后以 short 值的形式返回结果。

在进行读取前,流中的位偏移量被重置为 0。

指定者:
接口 DataInput 中的 readShort
指定者:
接口 ImageInputStream 中的 readShort
返回:
取自流的有符号 short 值。
抛出:
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
另请参见:
ImageInputStream.getByteOrder()

readUnsignedShort

public int readUnsignedShort()
                      throws IOException
从接口 ImageInputStream 复制的描述
从流中读取两个字节,根据当前字节顺序将其连接(概念上),将得到的值转换为 int,使用 0xffff 屏蔽以便去掉所有符号扩展位,然后以无符号 int 值的形式返回结果。

在进行读取前,流中的位偏移量被重置为 0。

指定者:
接口 DataInput 中的 readUnsignedShort
指定者:
接口 ImageInputStream 中的 readUnsignedShort
返回:
取自流的无符号 short 值(int 形式)。
抛出:
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
另请参见:
ImageInputStream.getByteOrder()

readChar

public char readChar()
              throws IOException
从接口 ImageInputStream 复制的描述
readUnsignedShort 等效,唯一的不同在于它的结果使用 char 数据类型返回。

在进行读取前,流中的位偏移量被重置为 0。

指定者:
接口 DataInput 中的 readChar
指定者:
接口 ImageInputStream 中的 readChar
返回:
取自流的无符号 char 值。
抛出:
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
另请参见:
ImageInputStream.readUnsignedShort()

readInt

public int readInt()
            throws IOException
从接口 ImageInputStream 复制的描述
从流中读取 4 个字节,根据当前字节顺序将其连接(概念上),然后以 int 值的形式返回结果。

忽略流中的位偏移量,将其视为 0。

指定者:
接口 DataInput 中的 readInt
指定者:
接口 ImageInputStream 中的 readInt
返回:
取自流的有符号 int 值。
抛出:
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
另请参见:
ImageInputStream.getByteOrder()

readUnsignedInt

public long readUnsignedInt()
                     throws IOException
从接口 ImageInputStream 复制的描述
从流中读取 4 个字节,根据当前字节顺序将其连接(概念上),将得到的值转换为 long,使用 0xffffffffL 屏蔽以便去掉所有符号扩展位,然后以无符号 long 值的形式返回结果。

在进行读取前,流中的位偏移量被重置为 0。

指定者:
接口 ImageInputStream 中的 readUnsignedInt
返回:
取自流的无符号 int 值(long 形式)。
抛出:
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
另请参见:
ImageInputStream.getByteOrder()

readLong

public long readLong()
              throws IOException
从接口 ImageInputStream 复制的描述
从流中读取 8 个字节,根据当前字节顺序将其连接(概念上),然后以 long 值的形式返回结果。

在进行读取前,流中的位偏移量被重置为 0。

指定者:
接口 DataInput 中的 readLong
指定者:
接口 ImageInputStream 中的 readLong
返回:
取自流的有符号 long 值。
抛出:
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
另请参见:
ImageInputStream.getByteOrder()

readFloat

public float readFloat()
                throws IOException
从接口 ImageInputStream 复制的描述
从流中读取 4 个字节,根据当前字节顺序将其连接(概念上),然后以 float 值的形式返回结果。

在进行读取前,流中的位偏移量被重置为 0。

指定者:
接口 DataInput 中的 readFloat
指定者:
接口 ImageInputStream 中的 readFloat
返回:
取自流的 float 值。
抛出:
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
另请参见:
ImageInputStream.getByteOrder()

readDouble

public double readDouble()
                  throws IOException
从接口 ImageInputStream 复制的描述
从流中读取 8 个字节,根据当前字节顺序将其连接(概念上),然后以 double 值的形式返回结果。

在进行读取前,流中的位偏移量被重置为 0。

指定者:
接口

JDK 1.6 中文手册