Most visited

Recently visited

Added in API level 1

AssetManager.AssetInputStream

public final class AssetManager.AssetInputStream
extends InputStream

java.lang.Object
   ↳ java.io.InputStream
     ↳ android.content.res.AssetManager.AssetInputStream


Summary

Public methods

final int available()

返回可从此输入流读取(或跳过)的字节数的估计值,而不会因为此输入流的下一次调用方法而被阻止。

final void close()

关闭此输入流并释放与该流关联的所有系统资源。

final void mark(int readlimit)

标记此输入流中的当前位置。

final boolean markSupported()

测试此输入流是否支持 markreset方法。

final int read()

从输入流中读取下一个字节的数据。

final int read(byte[] b, int off, int len)

从输入流中读取多达 len个字节的数据到字节数组中。

final int read(byte[] b)

从输入流中读取一些字节数并将它们存储到缓冲区数组 b

final void reset()

将此流重新定位到上次在此输入流上调用 mark方法时的位置。

final long skip(long n)

跳过并丢弃来自此输入流的 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

Public methods

available

Added in API level 1
int available ()

返回可从此输入流读取(或跳过)的字节数的估计值,而不会因为此输入流的下一次调用方法而被阻止。 下一次调用可能是同一个线程或另一个线程。 单个读取或跳过这么多字节不会被阻塞,但可以读取或跳过更少的字节。

请注意,尽管InputStream某些实现将返回流中的总字节数,但许多不会。 使用此方法的返回值分配旨在保存此流中所有数据的缓冲区永远是不正确的。

子类此方法的实现可以选择抛出 IOException如果输入流已通过调用关闭 close()方法。

InputStreamavailable方法始终返回 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

close

Added in API level 1
void close ()

关闭此输入流并释放与该流关联的所有系统资源。

close的方法 InputStream什么都不做。

Throws
IOException

mark

Added in API level 1
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.

markSupported

Added in API level 1
boolean markSupported ()

测试此输入流是否支持markreset方法。 是否支持markreset是特定输入流实例的不变特性。 markSupported方法InputStream返回false

Returns
boolean true if this stream instance supports the mark and reset methods; false otherwise.

read

Added in API level 1
int read ()

从输入流中读取下一个字节的数据。 值字节返回为int ,范围为0255 如果由于流的末尾已到达而没有可用的字节,则返回值-1 此方法阻塞直到输入数据可用,流的末尾被检测到,或抛出异常。

子类必须提供此方法的实现。

Returns
int the next byte of data, or -1 if the end of the stream is reached.
Throws
IOException

read

Added in API level 1
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

read

Added in API level 1
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]不受影响。

InputStreamread(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

reset

Added in API level 1
void reset ()

将此流重新定位到上次在此输入流上调用 mark方法时的位置。

reset的总合同是:

  • If the method markSupported returns true, then:
    • If the method 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.
    • If such an 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.
  • If the method markSupported returns false, then:
    • The call to reset may throw an IOException.
    • If an 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

skip

Added in API level 1
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

Protected methods

finalize

Added in API level 1
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

Hooray!