-
- All Superinterfaces:
-
AutoCloseable,Closeable,DataInput
- All Known Subinterfaces:
-
ImageOutputStream
- 所有已知实现类:
-
FileCacheImageInputStream,FileCacheImageOutputStream,FileImageInputStream,FileImageOutputStream,ImageInputStreamImpl,ImageOutputStreamImpl,MemoryCacheImageInputStream,MemoryCacheImageOutputStream
public interface ImageInputStream extends DataInput, Closeable
可搜索的输入流接口,供ImageReader使用。 各种输入源,例如InputStream和File,以及未来的快速I / O源可以由该接口的合适实现“包装”以供Image I / O API使用。
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 voidclose()关闭流。voidflush()丢弃当前流位置之前的流的初始位置。voidflushBefore(long pos)丢弃指定位置之前的流的初始部分。intgetBitOffset()返回当前位偏移量,为0到7之间的整数,包括0和7。ByteOrdergetByteOrder()返回将从此流中读取数据值的字节顺序,作为java.nio.ByteOrder枚举的实例。longgetFlushedPosition()返回可以执行搜索的流中最早的位置。longgetStreamPosition()返回流的当前字节位置。booleanisCached()如果此ImageInputStream缓存数据本身以允许向后true则返回true。booleanisCachedFile()如果此ImageInputStream缓存数据本身以允许向后搜索,则返回true,并且缓存保存在临时文件中。booleanisCachedMemory()如果此ImageInputStream缓存数据本身以允许向后搜索,则返回true,并且缓存保存在主存储器中。longlength()如果已知,则返回流的总长度。voidmark()通过后续调用reset标记要返回的流中的位置。intread()从流中读取单个字节并将其作为0到255之间的整数返回。intread(byte[] b)从流中读取最多b.length个字节,并将它们存储在从索引0开始的b。intread(byte[] b, int off, int len)读取到len从流字节,并将其存储到b开始于索引off。intreadBit()从流中读取一个位并将其作为int返回,值为0或1。longreadBits(int numBits)从流中读取一个位串并将其作为long返回,第一位读取成为输出的最高位。booleanreadBoolean()从该流读取一个字节,并返回一个boolean的值true如果是非零,false,如果它是零。bytereadByte()从流中读取一个字节并将其作为byte值返回。voidreadBytes(IIOByteBuffer buf, int len)从流中读取最多len个字节,并修改提供的IIOByteBuffer以指示可以找到数据的字节数组,偏移量和长度。charreadChar()等效于readUnsignedShort,但使用char数据类型返回结果除外。doublereadDouble()从流中读取8个字节,并(概念上)根据当前字节顺序连接它们,并将结果返回为double。floatreadFloat()从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果返回为float。voidreadFully(byte[] b)读取b.length从流字节,并将其存储到b开始于索引0。voidreadFully(byte[] b, int off, int len)读取len从流字节,并将其存储到b开始于索引off。voidreadFully(char[] c, int off, int len)读取len从根据当前字节顺序的流字符(无符号的16位整数),并将其存储到c开始于索引off。voidreadFully(double[] d, int off, int len)读取len根据当前字节顺序从流双打(64位IEEE双精度浮点值),并且将它们存储到d开始于索引off。voidreadFully(float[] f, int off, int len)读取len根据当前字节顺序从流浮标(32位IEEE单精度浮点值),并且将它们存储到f开始于索引off。voidreadFully(int[] i, int off, int len)读取len从根据当前字节顺序的流整数(带符号的32位整数),并将其存储到i开始于索引off。voidreadFully(long[] l, int off, int len)读取len从根据当前字节顺序的流long(有符号的64位整数),并将其存储到l开始于索引off。voidreadFully(short[] s, int off, int len)读取len从根据当前字节顺序的流短裤(带符号的16位整数),并将其存储到s开始于索引off。intreadInt()从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果返回为int。StringreadLine()从输入流中读取下一行文本。longreadLong()从流中读取8个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为long返回。shortreadShort()从流中读取两个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为short值返回。intreadUnsignedByte()从流中读取一个字节,并(概念上)将其转换为int,使用0xff对其进行0xff,以便剥离任何符号扩展位,并将其作为byte值返回。longreadUnsignedInt()从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,将结果转换为long,用0xffffffffL对其进行0xffffffffL,以便剥离任何符号扩展位,并将结果作为无符号返回long值。intreadUnsignedShort()从流中读取两个字节,并且(概念上)根据当前字节顺序连接它们,将结果值转换为int,用0xffff屏蔽它以剥离任何符号扩展名但是,并将结果作为unsigned返回价值int。StringreadUTF()读入使用 modified UTF-8格式编码的字符串。voidreset()在最近一次对mark不匹配调用时,返回指向其先前位置的流指针,包括位偏移量。voidseek(long pos)将当前流位置设置为所需位置。voidsetBitOffset(int bitOffset)将位偏移设置为0到7之间的整数,包括0和7。voidsetByteOrder(ByteOrder byteOrder)为将来从此流中读取数据值设置所需的字节顺序。intskipBytes(int n)将流位置向前移动给定的字节数。longskipBytes(long n)将流位置向前移动给定的字节数。
-
-
-
方法详细信息
-
setByteOrder
void setByteOrder(ByteOrder byteOrder)
为将来从此流中读取数据值设置所需的字节顺序。 例如,如果读取为4字节整数,则字节序列'0x01 0x02 0x03 0x04'将使用网络字节顺序具有值“0x01020304”,并且在反向字节顺序下具有值“0x04030201”。枚举类
java.nio.ByteOrder用于指定字节顺序。 值ByteOrder.BIG_ENDIAN指定所谓的big-endian或网络字节顺序,其中高位字节首先出现。 Motorola和Sparc处理器以此格式存储数据,而Intel处理器以反向存储数据ByteOrder.LITTLE_ENDIAN。字节顺序对
readBits方法返回的结果(或ImageOutputStream.writeBits写入的值)没有影响。- 参数
-
byteOrder-之一ByteOrder.BIG_ENDIAN或java.nio.ByteOrder.LITTLE_ENDIAN,指示网络字节顺序或它的反向是否将用于将来的读取。 - 另请参见:
-
ByteOrder,getByteOrder(),readBits(int)
-
getByteOrder
ByteOrder getByteOrder()
返回将从此流中读取数据值的字节顺序,作为java.nio.ByteOrder枚举的实例。- 结果
-
ByteOrder.BIG_ENDIAN或ByteOrder.LITTLE_ENDIAN,指示正在使用的字节顺序。 - 另请参见:
-
ByteOrder,setByteOrder(java.nio.ByteOrder)
-
read
int read() throws IOException
从流中读取单个字节并将其作为0到255之间的整数返回。如果到达流的末尾,则返回-1。在读取发生之前,流中的位偏移被重置为零。
- 结果
- 来自流的字节值,作为int,或-1表示EOF。
- 异常
-
IOException- 如果发生I / O错误。
-
read
int read(byte[] b) throws IOException
从流中读取最多b.length个字节,并从索引0开始将它们存储到b。返回读取的字节数。 如果由于已到达流的末尾而无法读取字节,则返回-1。在读取发生之前,流中的位偏移被重置为零。
- 参数
-
b- 要写入的字节数组。 - 结果
-
实际读取的字节数,或
-1表示EOF。 - 异常
-
NullPointerException- 如果b是null。 -
IOException- 如果发生I / O错误。
-
read
int read(byte[] b, int off, int len) throws IOException从流中读取最多len个字节,并将它们存储在b从索引off为b开始。 返回读取的字节数。 如果由于已到达流的末尾而无法读取任何字节,则返回-1。在读取发生之前,流中的位偏移被重置为零。
- 参数
-
b- 要写入的字节数组。 -
off- 要写入的b内的起始位置。 -
len- 要读取的最大数量bytes。 - 结果
-
实际读取的字节数,或
-1表示EOF。 - 异常
-
NullPointerException- 如果b是null。 -
IndexOutOfBoundsException- 如果off为负数,则len为负数,或off + len为大于b.length。 -
IOException- 如果发生I / O错误。
-
readBytes
void readBytes(IIOByteBuffer buf, int len) throws IOException
从流中读取最多len个字节,并修改提供的IIOByteBuffer以指示可以找到数据的字节数组,偏移量和长度。 调用者不应尝试修改IIOByteBuffer的数据。在读取发生之前,流中的位偏移被重置为零。
- 参数
-
buf- 要修改的IIOByteBuffer对象。 -
len- 要读取的最大数量为bytes。 - 异常
-
IndexOutOfBoundsException- 如果len为负数。 -
NullPointerException- 如果buf是null。 -
IOException- 如果发生I / O错误。
-
readBoolean
boolean readBoolean() throws IOException从该流读取一个字节,并返回一个boolean的值true如果是非零,false,如果它是零。在读取发生之前,流中的位偏移被重置为零。
- Specified by:
-
readBoolean在接口DataInput - 结果
- 来自流的布尔值。
- 异常
-
EOFException- 如果到达流的末尾。 -
IOException- 如果发生I / O错误。
-
readByte
byte readByte() throws IOException从流中读取一个字节并将其作为byte值返回。0x00和0x7f之间的字节值表示0和127之间的整数值。0x80和0xff之间的值表示从-128到/1。在读取发生之前,流中的位偏移被重置为零。
- Specified by:
-
readByte在界面DataInput - 结果
- 来自流的带符号字节值。
- 异常
-
EOFException- 如果到达流的末尾。 -
IOException- 如果发生I / O错误。
-
readUnsignedByte
int readUnsignedByte() throws IOException从流中读取一个字节,并(概念上)将其转换为int,使用0xff对其进行0xff,以便剥离任何符号扩展位,并将其作为byte值返回。因此,
0x00和0x7f之间的字节值仅作为0和127之间的整数值返回。0x80和0xff之间的值(通常表示负byte值)将映射到128和255之间的正整数。在读取发生之前,流中的位偏移被重置为零。
- Specified by:
-
readUnsignedByte在接口DataInput - 结果
- 来自流的无符号字节值。
- 异常
-
EOFException- 如果到达流的末尾。 -
IOException- 如果发生I / O错误。
-
readShort
short readShort() throws IOException从流中读取两个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为short值返回。在读取发生之前,流中的位偏移被重置为零。
- Specified by:
-
readShort在接口DataInput - 结果
- 来自流的签名短值。
- 异常
-
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
getByteOrder()
-
readUnsignedShort
int readUnsignedShort() throws IOException从流中读取两个字节,并(概念上)根据当前字节顺序连接它们,将结果值转换为int,用0xffff屏蔽它以剥离任何符号扩展名但是,并将结果作为无符号返回价值int。在读取发生之前,流中的位偏移被重置为零。
- Specified by:
-
readUnsignedShort接口DataInput - 结果
- 来自流的unsigned short值,作为int。
- 异常
-
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
getByteOrder()
-
readChar
char readChar() throws IOException等效于readUnsignedShort,但使用char数据类型返回结果除外。在读取发生之前,流中的位偏移被重置为零。
- Specified by:
-
readChar接口DataInput - 结果
- 流中的unsigned char值。
- 异常
-
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
readUnsignedShort()
-
readInt
int readInt() throws IOException从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为int返回。忽略流中的位偏移并将其视为零。
- Specified by:
-
readInt在接口DataInput - 结果
- 来自流的signed int值。
- 异常
-
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
getByteOrder()
-
readUnsignedInt
long readUnsignedInt() throws IOException从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,将结果转换为long,用0xffffffffL屏蔽它以0xffffffffL任何符号扩展位,并将结果作为无符号返回long值。在读取发生之前,流中的位偏移被重置为零。
- 结果
- 来自流的unsigned int值,为long。
- 异常
-
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
getByteOrder()
-
readLong
long readLong() throws IOException从流中读取8个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为long返回。在读取发生之前,流中的位偏移被重置为零。
- Specified by:
-
readLong接口DataInput - 结果
- 来自流的已签名长值。
- 异常
-
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
getByteOrder()
-
readFloat
float readFloat() throws IOException从流中读取4个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为float返回。在读取发生之前,流中的位偏移被重置为零。
- Specified by:
-
readFloat接口DataInput - 结果
- 来自流的浮点值。
- 异常
-
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
getByteOrder()
-
readDouble
double readDouble() throws IOException从流中读取8个字节,并(概念上)根据当前字节顺序连接它们,并将结果作为double返回。在读取发生之前,流中的位偏移被重置为零。
- Specified by:
-
readDouble接口DataInput - 结果
- 来自流的double值。
- 异常
-
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
getByteOrder()
-
readLine
String readLine() throws IOException
从输入流中读取下一行文本。 它读取连续的字节,将每个字节分别转换为字符,直到它遇到行终止符或文件结尾; 读取的字符然后返回为String。 请注意,因为此方法处理字节,所以它不支持完整Unicode字符集的输入。如果在读取一个字节之前遇到文件结尾,则返回
null。 否则,通过零扩展将读取的每个字节转换为类型char。 如果遇到字符'\n',则将其丢弃并停止读取。 如果遇到字符'\r',它将被丢弃,如果后面的字节转换为字符'\n',那么它也会被丢弃; 阅读然后停止。 如果遇到任何字符'\n'和'\r'之前遇到文件结尾,则读取停止。 一旦读取停止,将返回String,其中包含按顺序读取但未丢弃的所有字符。 请注意,此字符串中的每个字符的值都小于\u0100,即(char)256。在读取发生之前,流中的位偏移被重置为零。
- Specified by:
-
readLine在接口DataInput - 结果
- 包含流中文本行的String。
- 异常
-
IOException- 如果发生I / O错误。
-
readUTF
String readUTF() throws IOException
读入使用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 - 结果
- 从流中读取的字符串。
- 异常
-
EOFException- 如果此流在读取所有字节之前到达结尾。 -
UTFDataFormatException- 如果字节不表示字符串的有效修改的UTF-8编码。 -
IOException- 如果发生I / O错误。
-
readFully
void readFully(byte[] b, int off, int len) throws IOException读取len从流字节,并将其存储到b开始于索引off。 如果到达流的末尾,将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- Specified by:
-
readFully在接口DataInput - 参数
-
b- 要写入的字节数组。 -
off- 写入的位置在b内。 -
len- 要读取的最大数量为bytes。 - 异常
-
IndexOutOfBoundsException- 如果off为负数,len为负数,或者off + len为大于b.length。 -
NullPointerException- 如果b是null。 -
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。
-
readFully
void readFully(byte[] b) throws IOException读取b.length从流字节,并将其存储到b开始于索引0。 如果到达流的末尾,则将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- Specified by:
-
readFully在界面DataInput - 参数
-
b- 数组bytes。 - 异常
-
NullPointerException- 如果b是null。 -
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。
-
readFully
void readFully(short[] s, int off, int len) throws IOException根据当前字节顺序从流中读取len短路(带符号的16位整数),并将它们存储在s从索引off为s开始。 如果到达流的末尾,则将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 参数
-
s- 要写入的短裤数组。 -
off-内的起始位置s写入。 -
len- 要读取的最大数量为shorts。 - 异常
-
IndexOutOfBoundsException- 如果off为负数,len为负数,或者off + len为大于s.length。 -
NullPointerException- 如果s是null。 -
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。
-
readFully
void readFully(char[] c, int off, int len) throws IOException读取len从根据当前字节顺序的流字符(无符号的16位整数),并将其存储到c开始于索引off。 如果到达流的末尾,将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 参数
-
c- 要写入的字符数组。 -
off- 写入的c内的起始位置。 -
len- 要读取的最大数量char。 - 异常
-
IndexOutOfBoundsException- 如果off为负数,len为负数,或者off + len为大于c.length。 -
NullPointerException- 如果c是null。 -
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。
-
readFully
void readFully(int[] i, int off, int len) throws IOException读取len从根据当前字节顺序的流整数(带符号的32位整数),并将其存储到i开始于索引off。 如果到达流的末尾,则将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 参数
-
i- 要写入的int数组。 -
off- 写入的i内的起始位置。 -
len- 要读取的最大数量ints。 - 异常
-
IndexOutOfBoundsException- 如果off为负数,则len为负数,或off + len为大于i.length。 -
NullPointerException- 如果i是null。 -
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。
-
readFully
void readFully(long[] l, int off, int len) throws IOException读取len从根据当前字节顺序的流long(有符号的64位整数),并将其存储到l开始于索引off。 如果到达流的末尾,则将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 参数
-
l- 要写入的long数组。 -
off- 写入的l内的起始位置。 -
len- 要读取的最大数量longs。 - 异常
-
IndexOutOfBoundsException- 如果off为负数,len为负数,或者off + len为大于l.length。 -
NullPointerException- 如果l是null。 -
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。
-
readFully
void readFully(float[] f, int off, int len) throws IOException读取len根据当前字节顺序从流浮标(32位IEEE单精度浮点值),并且将它们存储到f开始于索引off。 如果到达流的末尾,则将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 参数
-
f- 要写入的浮点数组。 -
off- 写入的f内的起始位置。 -
len- 要读取的最大数量floats。 - 异常
-
IndexOutOfBoundsException- 如果off为负数,则len为负数,或off + len为大于f.length。 -
NullPointerException- 如果f是null。 -
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。
-
readFully
void readFully(double[] d, int off, int len) throws IOException根据当前字节顺序从流中读取len双精度(64位IEEE双精度浮点数),并将它们存储在d从索引offd开始。 如果到达流的末尾,则将抛出java.io.EOFException。在读取发生之前,流中的位偏移被重置为零。
- 参数
-
d- 要写入的双精度数组。 -
off- 写入内容的d内的起始位置。 -
len- 要读取的最大数量doubles。 - 异常
-
IndexOutOfBoundsException- 如果off为负数,len为负数,或者off + len为大于d.length。 -
NullPointerException- 如果d是null。 -
EOFException- 如果流在读取所有字节之前到达结尾。 -
IOException- 如果发生I / O错误。
-
getStreamPosition
long getStreamPosition() throws IOException返回流的当前字节位置。 下一次读取将从此偏移量开始。- 结果
- 一个长的包含流的位置。
- 异常
-
IOException- 如果发生I / O错误。
-
getBitOffset
int getBitOffset() throws IOException返回当前位偏移量,为0到7之间的整数,包括0和7。 通过调用readBits方法隐式更新位偏移。 值0表示最高有效位,值7表示正在读取的字节的最低有效位。位偏移量被设置为0时,流被第一次打开,并且通过调用复位为0至
seek,skipBytes,或任何read或readFully方法。- 结果
-
包含0到7之间的位偏移的
int。 - 异常
-
IOException- 如果发生I / O错误。 - 另请参见:
-
setBitOffset(int)
-
setBitOffset
void setBitOffset(int bitOffset) throws IOException将位偏移设置为0到7之间的整数,包括0和7。 流中的字节偏移量(由getStreamPosition返回)保持不变。 值0表示最高有效位,值7表示正在读取的字节的最低有效位。- 参数
-
bitOffset- 所需的偏移量,为0到7之间的int(含)。 - 异常
-
IllegalArgumentException- 如果bitOffset不在0和7之间(包括0和7)。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
getBitOffset()
-
readBit
int readBit() throws IOException从流中读取一个位并将其作为int返回,值为0或1。 位偏移增加1并减少模8。- 结果
-
一个
int包含值0或1。 - 异常
-
EOFException- 如果流在读取所有位之前到达结尾。 -
IOException- 如果发生I / O错误。
-
readBits
long readBits(int numBits) throws IOException从流中读取一个位串并将其作为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。- 参数
-
numBits- 要读取的位数,如0到64之间的int(含)。 - 结果
-
bitstring,作为
long,最后一位读取存储在最低有效位中。 - 异常
-
IllegalArgumentException- 如果numBits不在0到64之间(包括0和64)。 -
EOFException- 如果流在读取所有位之前到达结尾。 -
IOException- 如果发生I / O错误。
-
length
long length() throws IOException如果已知,则返回流的总长度。 否则,返回-1。- 结果
-
a
long包含流的长度(如果已知),否则为-1。 - 异常
-
IOException- 如果发生I / O错误。
-
skipBytes
int skipBytes(int n) throws IOException将流位置向前移动给定的字节数。 该方法可能仅能够以比请求的更少的字节数向前跳过,例如,如果到达流的末尾。 在所有情况下,都会返回跳过的实际字节数。 在前进位置之前将位偏移设置为零。- Specified by:
-
skipBytes在接口DataInput - 参数
-
n- 包含要跳过的字节数的int。 - 结果
-
表示跳过的字节数的
int。 - 异常
-
IOException- 如果发生I / O错误。
-
skipBytes
long skipBytes(long n) throws IOException将流位置向前移动给定的字节数。 此方法与skipBytes(int)相同,只是它允许更大的跳过距离。- 参数
-
n- 包含要跳过的字节数的long。 - 结果
-
表示跳过的字节数的
long。 - 异常
-
IOException- 如果发生I / O错误。
-
seek
void seek(long pos) throws IOException
将当前流位置设置为所需位置。 下一次读取将在此位置进行。 位偏移设置为0。一个
IndexOutOfBoundsException如果将被抛出pos比冲洗位置(如通过返回较小getflushedPosition)。寻找文件末尾是合法的; 只有在执行读操作时才会抛出
java.io.EOFException。- 参数
-
pos- 包含所需文件指针位置的long。 - 异常
-
IndexOutOfBoundsException- 如果pos小于刷新位置。 -
IOException- 如果发生任何其他I / O错误。
-
mark
void mark()
通过后续调用reset标记要返回的流中的位置。 与标准InputStream不同,所有ImageInputStream支持标记。 另外,对mark和reset调用可以任意嵌套。与
Reader和InputStream接口声明的mark方法不同,不使用readLimit参数。 调用mark可以读取任意数量的数据。readBits方法使用的位位置由每对mark和reset的调用保存和恢复。请注意,对于
ImageReader,flushBefore作为读操作的一部分调用flushBefore是有效的。 因此,如果一个应用程序调用mark传递一个流的前ImageReader,应用程序不应该假定标记位置将保持有效的读操作完成后。
-
reset
void reset() throws IOException在最近一次对mark不匹配调用时,返回指向其先前位置的流指针,包括位偏移量。reset没有对reset的相应调用,mark拨打mark无效。如果先前标记的位置位于流的丢弃部分中,则将抛出
IOException。- 异常
-
IOException- 如果发生I / O错误。
-
flushBefore
void flushBefore(long pos) throws IOException丢弃指定位置之前的流的初始部分。 试图在流的刷新部分内寻找偏移将导致IndexOutOfBoundsException。调用
flushBefore可能允许实现此接口的类释放资源,例如用于存储流中数据的内存或磁盘空间。- 参数
-
pos- 包含可以刷新的流前缀长度的long。 - 异常
-
IndexOutOfBoundsException- 如果pos位于流的刷新部分或超过当前流位置。 -
IOException- 如果发生I / O错误。
-
flush
void flush() throws IOException丢弃当前流位置之前的流的初始位置。 相当于flushBefore(getStreamPosition())。- 异常
-
IOException- 如果发生I / O错误。
-
getFlushedPosition
long getFlushedPosition()
返回可以执行搜索的流中最早的位置。 返回的值将是传递给之前调用flushBefore的所有值的最大值。- 结果
-
寻求最早的法律地位,如
long。
-
isCached
boolean isCached()
如果此ImageInputStream缓存数据本身以允许向后true则返回true。 应用程序可以参考此信息,以确定刷新的频率或是否以节省缓存资源。- 结果
-
true如果这个ImageInputStream缓存数据。 - 另请参见:
-
isCachedMemory(),isCachedFile()
-
isCachedMemory
boolean isCachedMemory()
如果此ImageInputStream缓存数据本身以允许向后搜索,则返回true,并且缓存保存在主内存中。 应用程序可以参考此信息,以确定刷新的频率或是否以节省缓存资源。- 结果
-
true如果此ImageInputStream数据缓存在主内存中。 - 另请参见:
-
isCached(),isCachedFile()
-
isCachedFile
boolean isCachedFile()
如果此ImageInputStream缓存数据本身以允许向后搜索,则返回true,并且缓存保存在临时文件中。 应用程序可以参考此信息,以确定刷新的频率或是否以节省缓存资源。- 结果
-
true如果此ImageInputStream数据缓存在临时文件中。 - 另请参见:
-
isCached(),isCachedMemory()
-
close
void close() throws IOException关闭流。 尝试访问已关闭的流可能会导致IOException或行为不正确。 调用此方法可能允许实现此接口的类释放与流关联的资源,如内存,磁盘空间或文件描述符。- Specified by:
-
close在接口AutoCloseable - Specified by:
-
close接口Closeable - 异常
-
IOException- 如果发生I / O错误。
-
-