-
- 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源可以被该接口的适当实现“包装”以供图像I / O API使用。
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 voidclose()关闭流。voidflush()在当前流位置之前丢弃流的初始位置。voidflushBefore(long pos)在指示的位置之前丢弃流的初始部分。intgetBitOffset()返回当前的位偏移量,为0到7之间的整数,包括0和7。ByteOrdergetByteOrder()作为java.nio.ByteOrder枚举的一个实例,返回从该流读取数据值的字节顺序。longgetFlushedPosition()返回可以执行搜索的流中的最早位置。longgetStreamPosition()返回流的当前字节位置。booleanisCached()返回true如果这个ImageInputStream缓存数据本身以允许向后搜索。booleanisCachedFile()返回true如果这个ImageInputStream缓存数据本身以允许向后搜索,并且高速缓存保存在临时文件中。booleanisCachedMemory()返回true如果这个ImageInputStream缓存数据本身以允许向后搜索,并且高速缓存保存在主内存中。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)从流读取一个bitstring,并将其作为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()从流中读取一个字节,并从概念0xff其转换为int,用0xff对其进行0xff,以剥离任何符号扩展位,并将其作为byte返回。longreadUnsignedInt()从流读取4个字节,(在概念上)根据当前字节顺序连接它们,将结果转换为长,将其用0xffffffffL屏蔽,以剥离任何符号扩展位,并将结果作为无符号返回long值。intreadUnsignedShort()从流中读取两个字节,并且(在概念上)根据当前字节顺序连接它们,将结果值转换为int,用0xffff进行掩码,以剥离任何符号扩展名,并将结果作为无符号返回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”的序列将以反向字节顺序使用网络字节顺序,值为“0x04030201”。枚举类
java.nio.ByteOrder用于指定字节顺序。 值ByteOrder.BIG_ENDIAN指定所谓的大端或网元字节顺序,其中高位字节先到。 摩托罗拉和Sparc处理器以这种格式存储数据,而英特尔处理器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。 返回读取的字节数。 如果没有字节可以读取,因为已经到达流的末尾,则返回-1。在发生读取之前,流内的位偏移被重置为零。
- 参数
-
b- 要写入的字节数组。 -
off- 起始位置在b内写。 -
len- 要阅读的最大数量为byte。 - 结果
-
实际读取的字节数,或
-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- 要阅读的最大数量byte。 - 异常
-
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屏蔽它,以便剥离任何符号扩展位,并将其作为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 - 结果
- 来自流的无符号短值,作为int。
- 异常
-
EOFException- 如果流在读取所有字节之前到达结束。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
getByteOrder()
-
readChar
char readChar() throws IOException相当于readUnsignedShort,除了使用char数据类型返回结果。在发生读取之前,流内的位偏移被重置为零。
- Specified by:
-
readChar在接口DataInput - 结果
- 来自流的无符号字符值。
- 异常
-
EOFException- 如果流在读取所有字节之前到达结束。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
readUnsignedShort()
-
readInt
int readInt() throws IOException读取4个字节从该流,并根据当前字节顺序(概念上)将其连接并返回其结果作为int。流内的位偏移被忽略,并被视为零。
- Specified by:
-
readInt在接口DataInput - 结果
- 来自流的已签名的int值。
- 异常
-
EOFException- 如果流在读取所有字节之前到达结束。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
getByteOrder()
-
readUnsignedInt
long readUnsignedInt() throws IOException从流中读取4个字节,(从概念上讲)根据当前字节顺序连接它们,将结果转换为长时间,用0xffffffffL对其进行0xffffffffL,以剥离任何符号扩展位,并将结果返回为无符号long值。在发生读取之前,流内的位偏移被重置为零。
- 结果
- 来自流的无符号int值,长久。
- 异常
-
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 - 结果
- 来自流的双重值。
- 异常
-
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 - 结果
- 一个包含流中文本行的字符串。
- 异常
-
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- 要阅读的最大数量byte。 - 异常
-
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-的阵列byte秒。 - 异常
-
NullPointerException- 如果b是null。 -
EOFException- 如果流在读取所有字节之前到达结束。 -
IOException- 如果发生I / O错误。
-
readFully
void readFully(short[] s, int off, int len) throws IOException读取len从根据当前字节顺序的流短裤(带符号的16位整数),并将其存储到s开始于索引off。 如果达到流的末尾,将抛出一个java.io.EOFException。在发生读取之前,流内的位偏移被重置为零。
- 参数
-
s- 要写入的短裤阵列。 -
off- 起始位置在s内写。 -
len- 要阅读的最大数量为short。 - 异常
-
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- 要阅读的最大数量int。 - 异常
-
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- 要写入的数组。 -
off- 起始位置在l内写。 -
len- 要阅读的最大数量long。 - 异常
-
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- 要阅读的最大数量float。 - 异常
-
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开始于索引off。 如果到达流的末尾,将抛出一个java.io.EOFException。在发生读取之前,流内的位偏移被重置为零。
- 参数
-
d- 要写入的双精度数组。 -
off- 起始位置在d内写。 -
len- 要阅读的最大数量double。 - 异常
-
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方法。- 结果
-
一个
int包含0和7之间的位偏移量(包括0和7)。 - 异常
-
IOException- 如果发生I / O错误。 - 另请参见:
-
setBitOffset(int)
-
setBitOffset
void setBitOffset(int bitOffset) throws IOException将位偏移设置为0到7之间的整数,包括0和7。 由getStreamPosition返回的流内的字节偏移保持不变。 值为0表示最高有效位,值为7表示正在读取的字节的最低有效位。- 参数
-
bitOffset- 所需的偏移量,为0和7之间的int,包括0和7。 - 异常
-
IllegalArgumentException- 如果bitOffset不在0和7之间,包括0和7。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
getBitOffset()
-
readBit
int readBit() throws IOException从流中读取一位,并将其作为int返回,值为0或1。 位偏移前进一并减少模8。- 结果
-
一个
int包含值0或1。 - 异常
-
EOFException- 如果流在读取所有位之前到达结束。 -
IOException- 如果发生I / O错误。
-
readBits
long readBits(int numBits) throws IOException从流读取一个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(); }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。- 结果
-
一个
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作为读取操作的一部分是有效的。 因此,如果一个应用程序调用mark之前通过该流至ImageReader,应用程序不应该假定标记的位置将保持有效的读操作完成后。
-
reset
void reset() throws IOException在最近不匹配的调用mark返回到其之前位置的流指针,包括位偏移量。拨打
reset没有对应的电话对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()
返回true如果这个ImageInputStream缓存数据本身,以允许向后搜索。 为了节省高速缓存资源,应用程序可以参考这一点,以确定刷新频率或是否进行刷新。- 结果
-
true如果这个ImageInputStream缓存数据。 - 另请参见:
-
isCachedMemory(),isCachedFile()
-
isCachedMemory
boolean isCachedMemory()
返回true如果这个ImageInputStream缓存数据本身,以便允许向后搜索,并且高速缓存保存在主内存中。 为了节省高速缓存资源,应用程序可以参考这一点,以确定刷新频率或是否进行刷新。- 结果
-
true如果这个ImageInputStream缓存数据在主内存中。 - 另请参见:
-
isCached(),isCachedFile()
-
isCachedFile
boolean isCachedFile()
返回true如果这个ImageInputStream缓存数据本身,以便允许向后搜索,并且高速缓存保存在临时文件中。 为了节省高速缓存资源,应用程序可以参考这一点,以确定刷新频率或是否进行刷新。- 结果
-
true如果这个ImageInputStream数据缓存在一个临时文件中。 - 另请参见:
-
isCached(),isCachedMemory()
-
close
void close() throws IOException关闭流。 尝试访问已关闭的流可能会导致IOException或错误的行为。 调用此方法可能允许实现此接口的类释放与流相关联的资源,如内存,磁盘空间或文件描述符。- Specified by:
-
close接口AutoCloseable - Specified by:
-
close在接口Closeable - 异常
-
IOException- 如果发生I / O错误。
-
-