public final class AssetManager.AssetInputStream
extends InputStream
java.lang.Object | ||
↳ | java.io.InputStream | |
↳ | android.content.res.AssetManager.AssetInputStream |
Public methods |
|
---|---|
final int |
available() 返回可从此输入流读取(或跳过)的字节数的估计值,而不会因为此输入流的下一次调用方法而被阻止。 |
final void |
close() 关闭此输入流并释放与该流关联的所有系统资源。 |
final void |
mark(int readlimit) 标记此输入流中的当前位置。 |
final boolean |
markSupported() 测试此输入流是否支持 |
final int |
read() 从输入流中读取下一个字节的数据。 |
final int |
read(byte[] b, int off, int len) 从输入流中读取多达 |
final int |
read(byte[] b) 从输入流中读取一些字节数并将它们存储到缓冲区数组 |
final void |
reset() 将此流重新定位到上次在此输入流上调用 |
final long |
skip(long n) 跳过并丢弃来自此输入流的 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.io.InputStream
|
|
From class java.lang.Object
|
|
From interface java.io.Closeable
|
|
From interface java.lang.AutoCloseable
|
int available ()
返回可从此输入流读取(或跳过)的字节数的估计值,而不会因为此输入流的下一次调用方法而被阻止。 下一次调用可能是同一个线程或另一个线程。 单个读取或跳过这么多字节不会被阻塞,但可以读取或跳过更少的字节。
请注意,尽管InputStream
某些实现将返回流中的总字节数,但许多不会。 使用此方法的返回值分配旨在保存此流中所有数据的缓冲区永远是不正确的。
子类此方法的实现可以选择抛出 IOException
如果输入流已通过调用关闭 close()
方法。
类 InputStream
的 available
方法始终返回 0
。
这个方法应该被子类覆盖。
Returns | |
---|---|
int |
an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking or 0 when it reaches the end of the input stream. |
Throws | |
---|---|
IOException |
void close ()
关闭此输入流并释放与该流关联的所有系统资源。
该 close
的方法 InputStream
什么都不做。
Throws | |
---|---|
IOException |
void mark (int readlimit)
标记此输入流中的当前位置。 随后调用reset
方法将此流重新定位到最后标记的位置,以便后续读取重新读取相同的字节。
readlimit
参数告诉这个输入流允许在标记位置失效之前读取许多字节。
mark
的一般合同是,如果方法markSupported
返回true
,则流以某种方式记住在调用mark
之后读取的所有字节,并且随时准备在调用方法reset
时再次提供那些相同的字节。 但是,如果在reset
之前从流中读取了超过readlimit
个字节,则该流不需要记住任何数据。
标记封闭的流不应该对流有任何影响。
该 mark
的方法 InputStream
什么都不做。
Parameters | |
---|---|
readlimit |
int : the maximum limit of bytes that can be read before the mark position becomes invalid. |
boolean markSupported ()
测试此输入流是否支持mark
和reset
方法。 是否支持mark
和reset
是特定输入流实例的不变特性。 markSupported
方法InputStream
返回false
。
Returns | |
---|---|
boolean |
true if this stream instance supports the mark and reset methods; false otherwise. |
int read ()
从输入流中读取下一个字节的数据。 值字节返回为int
,范围为0
至255
。 如果由于流的末尾已到达而没有可用的字节,则返回值-1
。 此方法阻塞直到输入数据可用,流的末尾被检测到,或抛出异常。
子类必须提供此方法的实现。
Returns | |
---|---|
int |
the next byte of data, or -1 if the end of the stream is reached. |
Throws | |
---|---|
IOException |
int read (byte[] b, int off, int len)
从输入流中最多读取len
个字节的数据到一个字节数组中。 尝试读取多达len
字节,但可以读取较小的数字。 实际读取的字节数作为整数返回。
此方法阻塞,直到输入数据可用,检测到文件结尾或引发异常。
如果len
为零,则不读取字节并返回0
; 否则,尝试读取至少一个字节。 如果由于流位于文件末尾而没有可用的字节,则返回值-1
; 否则,至少读取一个字节并存储到b
。
读取的第一个字节存储到元素b[off]
,下一个存储到b[off+1]
,依此类推。 读取的字节数最多等于len
。 令k为实际读取的字节数; 这些字节将存储在元素b[off]
到b[off+
k -1]
,使元素b[off+
k ]
到b[off+len-1]
不受影响。
在每种情况下,元素 b[0]
到 b[off]
和元素 b[off+len]
到 b[b.length-1]
都不受影响。
该read(b,
off,
len)
类方法InputStream
简单地调用该方法read()
反复。 如果第一次这样的调用导致IOException
,则该异常从调用返回到read(b,
off,
len)
方法。 如果对read()
任何后续调用导致IOException
,则将该例外作为文件结尾进行捕获和处理; 到此为止读取的字节将被存储到b
并返回发生异常之前读取的字节数。 此方法的默认实现会阻塞,直到读取所请求的输入数据量len
,检测到文件结尾或引发异常。 鼓励子类提供更高效的方法实现。
Parameters | |
---|---|
b |
byte : the buffer into which the data is read. |
off |
int : the start offset in array b at which the data is written. |
len |
int : the maximum number of bytes to read. |
Returns | |
---|---|
int |
the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached. |
Throws | |
---|---|
IOException |
int read (byte[] b)
从输入流中读取一些字节数并将它们存储到缓冲区数组b
。 实际读取的字节数作为整数返回。 此方法阻塞,直到输入数据可用,检测到文件结尾或引发异常。
如果b
的长度为零,则不读取字节并返回0
; 否则,尝试读取至少一个字节。 如果由于流位于文件末尾而没有可用字节,则返回值-1
; 否则,至少读取一个字节并存储到b
。
读取的第一个字节存储在元素b[0]
,下一个存储到b[1]
,依此类推。 读取的字节数最多等于b
的长度。 令k为实际读取的字节数; 这些字节将存储在元素b[0]
到b[
k -1]
,从而使元素b[
k ]
到b[b.length-1]
不受影响。
类 InputStream
的 read(b)
方法具有与以下相同的效果:
read(b, 0, b.length)
Parameters | |
---|---|
b |
byte : the buffer into which the data is read. |
Returns | |
---|---|
int |
the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached. |
Throws | |
---|---|
IOException |
void reset ()
将此流重新定位到上次在此输入流上调用 mark
方法时的位置。
reset
的总合同是:
markSupported
returns true
, then:
mark
has not been called since the stream was created, or the number of bytes read from the stream since mark
was last called is larger than the argument to mark
at that last call, then an IOException
might be thrown. IOException
is not thrown, then the stream is reset to a state such that all the bytes read since the most recent call to mark
(or since the start of the file, if mark
has not been called) will be resupplied to subsequent callers of the read
method, followed by any bytes that otherwise would have been the next input data as of the time of the call to reset
. markSupported
returns false
, then:
reset
may throw an IOException
. IOException
is not thrown, then the stream is reset to a fixed state that depends on the particular type of the input stream and how it was created. The bytes that will be supplied to subsequent callers of the read
method depend on the particular type of the input stream. 类 InputStream
的方法 reset
除了抛出 IOException
之外什么也不 IOException
。
Throws | |
---|---|
IOException |
long skip (long n)
跳过并丢弃来自此输入流的n
个字节的数据。 由于各种原因, skip
方法可能会跳过一些较小数量的字节,可能0
。 这可能是由于任何一种情况造成的。 在n
字节被跳过之前达到文件n
只是一种可能性。 返回跳过的实际字节数。 如果n
为负数,则不会跳过字节。
skip
方法创建一个字节数组,然后重复读入它,直到读取了n
个字节或已到达流的末尾。 鼓励子类提供更高效的方法实现。 例如,实施可能取决于寻求的能力。
Parameters | |
---|---|
n |
long : the number of bytes to be skipped. |
Returns | |
---|---|
long |
the actual number of bytes skipped. |
Throws | |
---|---|
IOException |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类重写finalize
方法来处置系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 方法finalize
可以采取任何行动,包括使该对象再次可用于其他线程; 然而, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类finalize
方法Object
执行特殊操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在针对一个对象调用了 finalize
方法之后,在Java虚拟机再次确定不再有任何方法可以通过任何尚未死亡的线程访问此对象的方法之前,不会采取进一步的操作,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定的对象,Java虚拟机从不会多次调用 finalize
方法。
finalize
方法抛出的任何异常 finalize
导致此对象的终止被暂停,但是会被忽略。
Throws | |
---|---|
Throwable |