所有类


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  intbitOffset
          流中的当前位偏移量。
protected  ByteOrderbyteOrder
          流的字节顺序,其为枚举类 java.nio.ByteOrder 的实例,其中 ByteOrder.BIG_ENDIAN 指示网络字节顺序,ByteOrder.LITTLE_ENDIAN 指示反向顺序。
protected  longflushedPos
          可能丢弃的数据前面的那个位置。
protected  longstreamPos
          流中的当前读取位置。
 
构造方法摘要
ImageInputStreamImpl()
          构造一个 ImageInputStreamImpl
 
方法摘要
protected  voidcheckClosed()
          如果已经关闭流,则抛出 IOException
 voidclose()
          关闭流。
protected  voidfinalize()
          在垃圾回收前结束此对象。
 voidflush()
          丢弃当前流位置之前的流初始部分。
 voidflushBefore(long pos)
          丢弃所指示部分之前的流初始部分。
 intgetBitOffset()
          以整数的形式返回当前位偏移量,该整数在 0 到 7 之间(包含两者)。
 ByteOrdergetByteOrder()
          以 java.nio.ByteOrder 枚举实例的形式返回从此流中读取数据值时所使用的字节顺序。
 longgetFlushedPosition()
          返回流中可以查找到的最早的部分。
 longgetStreamPosition()
          返回流的当前字节位置。
 booleanisCached()
          默认实现返回 false。
 booleanisCachedFile()
          默认实现返回 false。
 booleanisCachedMemory()
          默认实现返回 false。
 longlength()
          返回 -1L,指示流的长度未知。
 voidmark()
          将当前流位置推进到标记位置的堆栈上。
abstract  intread()
          从流中读取单个字节,并以整数(0 到 255 之间)形式返回该字节。
 intread(byte[] b)
          调用 read(b, 0, b.length) 的便捷方法。
abstract  intread(byte[] b, int off, int len)
          从流中读取至多 len 个字节,并将其存储到 b 中(从 off 索引处开始)。
 intreadBit()
          从流中读取单个字节,并以 int01)的形式返回该字节。
 longreadBits(int numBits)
          从流中读取位串 (bitstring) 并以 long 的形式返回,使第一个读取的位成为输出的最高有效位。
 booleanreadBoolean()
          读取一个输入字节,如果该字节不是零,则返回 true,如果是零,则返回 false
 bytereadByte()
          读取并返回一个输入字节。
 voidreadBytes(IIOByteBuffer buf, int len)
          从流中读取至多 len 个字节,并修改提供的 IIOByteBuffer 来指示可以用来找到数据的字节数组、偏移量以及长度。
 charreadChar()
          读取一个输入的 char 并返回该 char 值。
 doublereadDouble()
          读取八个输入字节并返回一个 double 值。
 floatreadFloat()
          读取四个输入字节并返回一个 float 值。
 voidreadFully(byte[] b)
          从输入流中读取一些字节,并将它们存储到缓冲区数组 b 中。
 voidreadFully(byte[] b, int off, int len)
          从输入流中读取 len 个字节。
 voidreadFully(char[] c, int off, int len)
          根据当前字节顺序从流中读取 len 个 char(无符号 16 位整数),并将其存储到 c 中(从索引 off 开始)。
 voidreadFully(double[] d, int off, int len)
          根据当前字节顺序从流中读取 len 个 double(64 位 IEEE 双精度浮点值),并将其存储到 d 中(从索引 off 开始)。
 voidreadFully(float[] f, int off, int len)
          根据当前字节顺序从流中读取 len 个 float(32 位 IEEE 单精度浮点值),并将其存储到 f 中(从索引 off 开始)。
 voidreadFully(int[] i, int off, int len)
          根据当前字节顺序从流中读取 len 个 int(有符号 32 位整数),并将其存储到 i 中(从索引 off 开始)。
 voidreadFully(long[] l, int off, int len)
          根据当前字节顺序从流中读取 len 个 long(有符号 64 位整数),并将其存储到 l 中(从索引 off 开始)。
 voidreadFully(short[] s, int off, int len)
          根据当前字节顺序从流中读取 len 个 short(有符号 16 位整数),并将其存储到 s 中(从索引 off 开始)。
 intreadInt()
          读取四个输入字节并返回一个 int 值。
 StringreadLine()
          从输入流中读取下一文本行。
 longreadLong()
          读取八个输入字节并返回一个 long 值。
 shortreadShort()
          读取两个输入字节并返回一个 short 值。
 intreadUnsignedByte()
          读取一个输入字节,将它左侧补零 (zero-extend) 转变为 int 类型,并返回结果,所以结果的范围是 0255
 longreadUnsignedInt()
          从流中读取 4 个字节,根据当前字节顺序将其连接(概念上),将得到的值转换为 long,使用 0xffffffffL 屏蔽以便去掉所有符号扩展位,然后以无符号 long 值的形式返回结果。
 intreadUnsignedShort()
          读取两个输入字节,并返回 065535 范围内的一个 int 值。
 StringreadUTF()
          读入一个已使用 UTF-8 修改版格式编码的字符串。
 voidreset()
          根据标记的堆栈重置当前流字节和位位置。
 voidseek(long pos)
          将当前流位置设置为所需的位置。
 voidsetBitOffset(int bitOffset)
          将位偏移量设置为 0 到 7 之间(包含两者)的整数。
 voidsetByteOrder(ByteOrder byteOrder)
          设置希望以后从此流中读取数据值时使用的字节顺序。
 intskipBytes(int n)
          通过调用 seek(getStreamPosition() + n) 推进当前流位置。
 longskipBytes(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 错误。