JavaTM 2 Platform
Standard Ed. 5.0

javax.imageio.stream
类 ImageInputStreamImpl

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()
          从流中读取单个字节,并以整数(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()
          读取一个输入字节,如果该字节不是零,则返回 true,如果是零,则返回 false
 byte readByte()
          读取并返回一个输入字节。
 void readBytes(IIOByteBuffer buf, int len)
          从流中读取至多 len 个字节,并修改提供的 IIOByteBuffer 来指示可以用来找到数据的字节数组、偏移量以及长度。
 char readChar()
          读取一个输入的 char 并返回该 char 值。
 double readDouble()
          读取八个输入字节并返回一个 double 值。
 float readFloat()
          读取四个输入字节并返回一个 float 值。
 void readFully(byte[] b)
          从输入流中读取一些字节,并将它们存储到缓冲区数组 b 中。
 void readFully(byte[] b, int off, int len)
          从输入流中读取 len 个字节。
 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()
          读取四个输入字节并返回一个 int 值。
 String readLine()
          从输入流中读取下一文本行。
 long readLong()
          读取八个输入字节并返回一个 long 值。
 short readShort()
          读取两个输入字节并返回一个 short 值。
 int readUnsignedByte()
          读取一个输入字节,将它左侧补零 (zero-extend) 转变为 int 类型,并返回结果,所以结果的范围是 0255
 long readUnsignedInt()
          从流中读取 4 个字节,根据当前字节顺序将其连接(概念上),将得到的值转换为 long,使用 0xffffffffL 屏蔽以便去掉所有符号扩展位,然后以无符号 long 值的形式返回结果。
 int readUnsignedShort()
          读取两个输入字节,并返回 065535 范围内的一个 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
从接口 ImageInputStream 复制的描述
从流中读取单个字节,并以整数(0 到 255 之间)形式返回该字节。如果到达流末尾,则返回 -1。

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

指定者:
接口 ImageInputStream 中的 read
返回:
流中的 int 形式的字节值;或者 -1,指示 EOF(文件结束标记)。
抛出:
IOException - 如果发生 I/O 错误。

read

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

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

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

read

public abstract int read(byte[] b,
                         int off,
                         int len)
                  throws IOException
从流中读取至多 len 个字节,并将其存储到 b 中(从 off 索引处开始)。如果由于到达流末尾而没有读取任何字节,则返回 -1

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

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

指定者:
接口 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 来指示可以用来找到数据的字节数组、偏移量以及长度。调用方不应该试图修改 IIOByteBuffer 中的数据。

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

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

readBoolean

public boolean readBoolean()
                    throws IOException
从接口 DataInput 复制的描述
读取一个输入字节,如果该字节不是零,则返回 true,如果是零,则返回 false。此方法适用于读取用接口 DataOutputwriteBoolean 方法写入的字节。

指定者:
接口 DataInput 中的 readBoolean
指定者:
接口 ImageInputStream 中的 readBoolean
返回:
读取的 boolean 值。
抛出:
EOFException - 如果此流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。

readByte

public byte readByte()
              throws IOException
从接口 DataInput 复制的描述
读取并返回一个输入字节。该字节被看作是 -128127(包含)范围内的一个有符号值。此方法适用于读取用接口 DataOutputwriteByte 方法写入的字节。

指定者:
接口 DataInput 中的 readByte
指定者:
接口 ImageInputStream 中的 readByte
返回:
读取的 8 位值。
抛出:
EOFException - 如果此流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。

readUnsignedByte

public int readUnsignedByte()
                     throws IOException
从接口 DataInput 复制的描述
读取一个输入字节,将它左侧补零 (zero-extend) 转变为 int 类型,并返回结果,所以结果的范围是 0255。如果接口 DataOutputwriteByte 方法的参数是 0255 之间的值,则此方法适用于读取用 writeByte 写入的字节。

指定者:
接口 DataInput 中的 readUnsignedByte
指定者:
接口 ImageInputStream 中的 readUnsignedByte
返回:
读取的无符号 8 位值。
抛出:
EOFException - 如果此流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。

readShort

public short readShort()
                throws IOException
从接口 DataInput 复制的描述
读取两个输入字节并返回一个 short 值。设 a 为第一个读取字节,b 为第二个读取字节。返回的值是:

(short)((a << 8) | (b & 0xff))
 
此方法适用于读取用接口 DataOutputwriteShort 方法写入的字节。

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

readUnsignedShort

public int readUnsignedShort()
                      throws IOException
从接口 DataInput 复制的描述
读取两个输入字节,并返回 065535 范围内的一个 int 值。设 a 为第一个读取字节,b 为第二个读取字节。返回的值是:

(((a & 0xff) << 8) | (b & 0xff))
 
如果接口 DataOutputwriteShort 方法的参数是 065535 范围内的值,则此方法适用于读取用 writeShort 写入的字节。

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

readChar

public char readChar()
              throws IOException
从接口 DataInput 复制的描述
读取一个输入的 char 并返回该 char 值。Unicode char 由两个字节组成。设 a 为第一个读取字节,b 为第二个读取字节。返回的值是:

(char)((a << 8) | (b & 0xff))
 
此方法适用于读取用接口 DataOutputwriteChar 方法写入的字节。

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

readInt

public int readInt()
            throws IOException
从接口 DataInput 复制的描述
读取四个输入字节并返回一个 int 值。设 a 为第一个读取字节,b 为第二个读取字节,c 为第三个读取字节,d 为第四个读取字节。返回的值是:

 
 (((a & 0xff) << 24) | ((b & 0xff) << 16) |
  ((c & 0xff) << 8) | (d & 0xff))
 
此方法适用于读取用接口 DataOutputwriteInt 方法写入的字节。

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

readUnsignedInt

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

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

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

readLong

public long readLong()
              throws IOException
从接口 DataInput 复制的描述
读取八个输入字节并返回一个 long 值。设 a 为第一个读取字节,b 为第二个读取字节,c 为第三个读取字节,d 为第四个读取字节,e 为五个读取字节,f 为第六个读取字节,g 为第七个读取字节,h 为第八个读取字节。返回的值是:

 
 (((long)(a & 0xff) << 56) |
  ((long)(b & 0xff) << 48) |
  ((long)(c & 0xff) << 40) |
  ((long)(d & 0xff) << 32) |
  ((long)(e & 0xff) << 24) |
  ((long)(f & 0xff) << 16) |
  ((long)(g & 0xff) <<  8) |
  ((long)(h & 0xff)))
 

此方法适用于读取用接口 DataOutputwriteLong 方法写入的字节。

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

readFloat

public float readFloat()
                throws IOException
从接口 DataInput 复制的描述
读取四个输入字节并返回一个 float 值。实现这一点的方法是:先使用与 readInt 方法完全相同的方式构造一个 int 值,然后使用与 Float.intBitsToFloat 方法完全相同的方式将此 int 值转换成一个 float 值。此方法适用于读取用接口 DataOutputwriteFloat 方法写入的字节。

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

readDouble

public double readDouble()
                  throws IOException
从接口 DataInput 复制的描述
读取八个输入字节并返回一个 double 值。实现这一点的方法是:先使用与 readlong 方法完全相同的方式构造一个 long 值,然后使用与 Double.longBitsToDouble 方法完全相同的方式将此 long 值转换成一个 double 值。此方法适用于读取用接口 DataOutputwriteDouble 方法写入的字节。

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

readLine

public String readLine()
                throws IOException
从接口 DataInput 复制的描述
从输入流中读取下一文本行。该方法读取连续的字节,将每个字节分别转换成一个字符,直到遇到行结尾符或末尾;然后以 String 形式返回读取的字符。注意,因为此方法处理字符,所以它不支持整个 Unicode 字符集的输入。

如果在一个字节都没有读取的时候就遇到文件末尾,则返回 null。否则,通过左侧补零将读取的每个字节转换成 char 类型的值。如果遇到字符 '\n',则丢弃它并且停止读取。如果遇到字符 '\r' 则丢弃它,如果后续字节转变成字符 '\n',则同样丢弃,并且停止读取。如果在遇到字符 '\n''\r' 之一前遇到文件末尾,则停止读取。一旦已停止读取,则返回一个 String,它按顺序包含所有已读取且未丢弃的字符。注意,此字符串中的每个字符的值都将小于 \u0100(即 (char)256)的值。

指定者:
接口 DataInput 中的 readLine
指定者:
接口 ImageInputStream 中的 readLine
返回:
输入流中文本的下一行,如果还没有读取一个字节就遇到文件末尾,则返回 null
抛出:
IOException - 如果发生 I/O 错误。

readUTF

public String readUTF()
               throws IOException
从接口 DataInput 复制的描述
读入一个已使用 UTF-8 修改版格式编码的字符串。readUTF 的常规协定是:该方法读取使用 UTF-8 修改版格式编码的 Unicode 字符串的表示形式;然后以 String 的形式返回此字符串。

首先读取两个字节,并使用它们构造一个无符号 16 位整数,构造方式与 readUnsignedShort 方法的方式完全相同。该整数值被称为 UTF 长度,它指定要读取的额外字节数。然后成组地将这些字节转换为字符。每组的长度根据该组第一个字节的值计算。紧跟在某个组后面的字节(如果有)是下一组的第一个字节。

如果组的第一个字节与位模式 0xxxxxxx(其中 x 表示“可能为 01”)匹配,则该组只有这一个字节。该字节被左侧补零,转换成一个字符。

如果组的第一个字节与位模式 110xxxxx 匹配,则该组只由字节 a 和另一个字节 b 组成。如果没有字节 b(因为字节 a 是要读取的最后一个字节),或者字节 b 与位模式 10xxxxxx 不匹配,则抛出 UTFDataFormatException。否则,将该组转换成字符:

(char)(((a& 0x1F) << 6) | (b & 0x3F))
 
如果组的第一个字节与位模式 1110xxxx 匹配,则该组由字节 a 和另外两个字节 bc 组成。如果没有字节 c(因为字节 a 是要读取的最后两个字节之一),或者字节 b 或字节 c 与位模式 10xxxxxx 不匹配,则抛出 UTFDataFormatException。否则,将该组转换成字符:


 (char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
 
如果组的第一个字节与模式 1111xxxx 或模式 10xxxxxx 匹配,则抛出 UTFDataFormatException

如果在执行整个过程中的任意时间遇到文件末尾,则抛出 EOFException

在通过此过程将每个组转换成字符后,按照从输入流中读取相应组的顺序,将这些字符收集在一起,形成一个 String,然后该字符串将被返回。

可以使用 DataOutput 接口的 writeUTF 方法写入适合此方法读取的数据。

指定者:
接口 DataInput 中的 readUTF
指定者:
接口 ImageInputStream 中的 readUTF
返回:
一个 Unicode 字符串。
抛出:
EOFException - 如果此流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。
UTFDataFormatException - 如果这些字节不表示一个有效的、UTF-8 修改版编码的字符串。

readFully

public void readFully(byte[] b,
                      int off,
                      int len)
               throws IOException
从接口 DataInput 复制的描述
从输入流中读取 len 个字节。

在出现以下条件之一以前,此方法将阻塞:

如果 bnull,则抛出 NullPointerException。如果 off 为负,或 len 为负,抑或 off+len 大于数组 b 的长度,则抛出 IndexOutOfBoundsException。如果 len 为零,则不读取字节。否则,将读取的第一个字节存储到元素 b[off] 中,下一个字节存储到 b[off+1] 中,依此类推。读取的字节数至多等于 b[0]

指定者:
接口 DataInput 中的 readFully
指定者:
接口 ImageInputStream 中的 readFully
参数:
b - 存储读取数据的缓冲区。
off - 指定数据中的偏移量的 int。
len - 指定读取的字节数的 int。
抛出:
EOFException - 如果此流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。

readFully

public void readFully(byte[] b)
               throws IOException
从接口 DataInput 复制的描述
从输入流中读取一些字节,并将它们存储到缓冲区数组 b 中。读取的字节数等于 b 的长度。

在出现以下条件之一前,此方法将阻塞:

如果 bnull,则抛出 NullPointerException。如果 b.length 为零,则不读取字节。否则,将读取的第一个字节存储到元素 b[0] 中,下一个字节存储到 b[1] 中,依此类推。如果此方法抛出异常,则可能是因为已经用输入流中的数据更新了 b 的某些(但非全部)字节。

指定者:
接口 DataInput 中的 readFully
指定者:
接口 ImageInputStream 中的 readFully
参数:
b - 存储读取数据的缓冲区。
抛出:
EOFException - 如果此流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。

readFully

public void readFully(short[] s,
                      int off,
                      int len)
               throws IOException
从接口 ImageInputStream 复制的描述
根据当前字节顺序从流中读取 len 个 short(有符号 16 位整数),并将其存储到 s 中(从索引 off 开始)。如果到达流末尾,则将抛出 EOFException

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

指定者:
接口 ImageInputStream 中的 readFully
参数:
s - 用来接收写入的 short 数组。
off - 向 s 进行写入的开始位置。
len - 要读取的最大 short 数。
抛出:
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。

readFully

public void readFully(char[] c,
                      int off,
                      int len)
               throws IOException
从接口 ImageInputStream 复制的描述
根据当前字节顺序从流中读取 len 个 char(无符号 16 位整数),并将其存储到 c 中(从索引 off 开始)。如果到达流末尾,则将抛出 EOFException

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

指定者:
接口 ImageInputStream 中的 readFully
参数:
c - 用来接收写入的 char 数组。
off - 向 s 进行写入的开始位置。
len - 要读取的最大 char 数。
抛出:
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。

readFully

public void readFully(int[] i,
                      int off,
                      int len)
               throws IOException
从接口 ImageInputStream 复制的描述
根据当前字节顺序从流中读取 len 个 int(有符号 32 位整数),并将其存储到 i 中(从索引 off 开始)。如果到达流末尾,则将抛出 EOFException

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

指定者:
接口 ImageInputStream 中的 readFully
参数:
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 开始)。如果到达流末尾,则将抛出 EOFException

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

指定者:
接口 ImageInputStream 中的 readFully
参数:
l - 用来接收写入的 long 数组。
off - 向 l 进行写入的开始位置。
len - 要读取的最大 long 数。
抛出:
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。

readFully

public void readFully(float[] f,
                      int off,
                      int len)
               throws IOException
从接口 ImageInputStream 复制的描述
根据当前字节顺序从流中读取 len 个 float(32 位 IEEE 单精度浮点值),并将其存储到 f 中(从索引 off 开始)。如果到达流末尾,则将抛出 EOFException

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

指定者:
接口 ImageInputStream 中的 readFully
参数:
f - 用来接收写入的 float 数组。
off - 向 f 进行写入的开始位置。
len - 要读取的最大 float 数。
抛出:
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。

readFully

public void readFully(double[] d,
                      int off,
                      int len)
               throws IOException
从接口 ImageInputStream 复制的描述
根据当前字节顺序从流中读取 len 个 double(64 位 IEEE 双精度浮点值),并将其存储到 d 中(从索引 off 开始)。如果到达流末尾,则将抛出 EOFException

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

指定者:
接口 ImageInputStream 中的 readFully
参数:
d - 用来接收写入的 double 数组。
off - 向 d 进行写入的开始位置。
len - 要读取的最大 double 数。
抛出:
EOFException - 如果该流在读取所有字节之前到达末尾。
IOException - 如果发生 I/O 错误。

getStreamPosition

public long getStreamPosition()
                       throws IOException
从接口 ImageInputStream 复制的描述
返回流的当前字节位置。下一次读取将从此偏移量开始。

指定者:
接口 ImageInputStream 中的 getStreamPosition
返回:
一个包含流位置 long 值。
抛出:
IOException - 如果发生 I/O 错误。

getBitOffset

public int getBitOffset()
                 throws IOException
从接口 ImageInputStream 复制的描述
以整数的形式返回当前位偏移量,该整数在 0 到 7 之间(包含两者)。位偏移量通过调用 readBits 方法隐式地更新。值 0 指示所读取字节的最高有效位,值 7 指示所读取字节的最低有效位。

第一次打开流时位偏移量被设置为 0,以后可以通过调用 seekskipBytes、或者任何 readreadFully 方法将其重置为 0。

指定者:
接口 ImageInputStream 中的 getBitOffset
返回:
一个 int,包含 0 到 7 之间(包含两者)的位偏移量。
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
ImageInputStream.setBitOffset(int)

setBitOffset

public void setBitOffset(int bitOffset)
                  throws IOException
从接口 ImageInputStream 复制的描述
将位偏移量设置为 0 到 7 之间(包含两者)的整数。不改变流中由 getStreamPosition 返回的位偏移量。值 0 指示所读取字节的最高有效位,值 7 指示所读取字节的最低有效位。

指定者:
接口 ImageInputStream 中的 setBitOffset
参数:
bitOffset - 所需的偏移量,为 0 到 7 之间(包括两者)的int 的形式。
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
ImageInputStream.getBitOffset()

readBit

public int readBit()
            throws IOException
从接口 ImageInputStream 复制的描述
从流中读取单个字节,并以 int01)的形式返回该字节。将位偏移量加 1 并将其模数减 8。

指定者:
接口 ImageInputStream 中的 readBit
返回:
一个 int,包含值 01
抛出:
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();
 }
 
注意,如果使用了与网络字节顺序相反的顺序(即,getByteOrder() == false),那么 readBits(32) 的结果可能因此而不等于 readInt() 的结果。

如果在读取了所有位前遇到流末尾,则抛出 EOFException

指定者:
接口 ImageInputStream 中的 readBits
参数:
numBits - 要读取的位数,为 0 到 64 之间(包含两者)的 int 形式。
返回:
long 形式的位串,最后读取的位存储在最低有效位中。
抛出:
EOFException - 如果该流在读取所有位之前到达末尾。
IOException - 如果发生 I/O 错误。

length

public long length()
返回 -1L,指示流的长度未知。子类必须重写此方法来提供实际的长度信息。

指定者:
接口 ImageInputStream 中的 length
返回:
指示不知道长度的 -1L。

skipBytes

public int skipBytes(int n)
              throws IOException
通过调用 seek(getStreamPosition() + n) 推进当前流位置。

将位偏移量重置为零。

指定者:
接口 DataInput 中的 skipBytes
指定者:
接口 ImageInputStream 中的 skipBytes
参数:
n - 要逆向查找的字节数。
返回:
一个 int,表示跳过的字节数。
抛出:
IOException - 如果 getStreamPosition 计算起始或结束位置时抛出 IOException

skipBytes

public long skipBytes(long n)
               throws IOException
通过调用 seek(getStreamPosition() + n) 推进当前流位置。

将位偏移量重置为零。

指定者:
接口 ImageInputStream 中的 skipBytes
参数:
n - 要逆向查找的字节数。
返回:
一个 long,表示跳过的字节数。
抛出:
IOException - 如果 getStreamPosition 计算起始或结束位置时抛出 IOException

seek

public void seek(long pos)
          throws IOException
从接口 ImageInputStream 复制的描述
将当前流位置设置为所需的位置。下一次读取将在此位置上进行。位偏移量被设置为 0。

如果 pos 小于刷新缓冲的位置(由 getflushedPosition 返回),将抛出 IndexOutOfBoundsException

查找文件末尾之后是合法的,只有在该处执行读取时才抛出 EOFException

指定者:
接口 ImageInputStream 中的 seek
参数:
pos - 一个 long,它包含所需文件的指针位置。
抛出:
IOException - 如果发生任何 I/O 错误。

mark

public void mark()
将当前流位置推进到标记位置的堆栈上。

指定者:
接口 ImageInputStream 中的 mark

reset

public void reset()
           throws IOException
根据标记的堆栈重置当前流字节和位位置。

如果以前的标记位置位于流的丢弃部分,则抛出 IOException

指定者:
接口 ImageInputStream 中的 reset
抛出:
IOException - 如果发生 I/O 错误。

flushBefore

public void flushBefore(long pos)
                 throws IOException
从接口 ImageInputStream 复制的描述
丢弃所指示部分之前的流初始部分。试图查找流的刷新部分中的偏移量将导致抛出 IndexOutOfBoundsException

调用 flushBefore 可允许实现此接口的类释放用于存储流中的数据的资源(如内存和磁盘空间)。

指定者:
接口 ImageInputStream 中的 flushBefore
参数:
pos - 一个 long,它包含要刷新的文件前缀的长度。
抛出:
IOException - 如果发生 I/O 错误。

flush

public void flush()
           throws IOException
从接口 ImageInputStream 复制的描述
丢弃当前流位置之前的流初始部分。等效于 flushBefore(getStreamPosition())

指定者:
接口 ImageInputStream 中的 flush
抛出:
IOException - 如果发生 I/O 错误。

getFlushedPosition

public long getFlushedPosition()
从接口 ImageInputStream 复制的描述
返回流中可以查找到的最早的部分。返回的值将是传入对 flushBefore 的以前调用的所有值中的最大值。

指定者:
接口 ImageInputStream 中的 getFlushedPosition
返回:
用来查找的 long 的形式的最早合法位置。

isCached

public boolean isCached()
默认实现返回 false。如果子类缓存数据,则其应该重写此方法。

指定者:
接口 ImageInputStream 中的 isCached
返回:
如果此 ImageInputStream 缓存数据,则返回 true
另请参见:
ImageInputStream.isCachedMemory(), ImageInputStream.isCachedFile()

isCachedMemory

public boolean isCachedMemory()
默认实现返回 false。如果子类在主存中缓存数据,则其应该重写此方法。

指定者:
接口 ImageInputStream 中的 isCachedMemory
返回:
如果此 ImageInputStream 在主存中缓存数据,则返回 true
另请参见:
ImageInputStream.isCached(), ImageInputStream.isCachedFile()

isCachedFile

public boolean isCachedFile()
默认实现返回 false。如果子类在临时文件中缓存数据,则其应该重写此方法。

指定者:
接口 ImageInputStream 中的 isCachedFile
返回:
如果此 ImageInputStream 在临时文件中缓存数据,则返回 true
另请参见:
ImageInputStream.isCached(), ImageInputStream.isCachedMemory()

close

public void close()
           throws IOException
从接口 ImageInputStream 复制的描述
关闭流。试图访问已经关闭的流将导致 IOException 或错误行为。调用此方法可允许实现此接口的类释放与流关联的资源(如内存、磁盘空间或文件描述符)。

指定者:
接口 ImageInputStream 中的 close
抛出:
IOException - 如果发生 I/O 错误。

finalize

protected void finalize()
                 throws Throwable
在垃圾回收前结束此对象。调用 close 方法来关闭所有开启的输入源。不应该从应用程序代码调用此方法。

覆盖:
Object 中的 finalize
抛出:
Throwable - 如果在超类终止过程中发生错误。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策