Most visited

Recently visited

Added in API level 1

InputStream

public abstract class InputStream
extends Object implements Closeable

java.lang.Object
   ↳ java.io.InputStream
Known Direct Subclasses
Known Indirect Subclasses


这个抽象类是代表输入字节流的所有类的超类。

需要定义 InputStream的子类的应用程序必须始终提供返回下一个输入字节的方法。

也可以看看:

Summary

Public constructors

InputStream()

Public methods

int available()

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

void close()

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

void mark(int readlimit)

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

boolean markSupported()

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

abstract int read()

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

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

最多可将 len个字节的数据从输入流转换为字节数组。

int read(byte[] b)

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

void reset()

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

long skip(long n)

跳过并丢弃来自此输入流的 n字节的数据。

Inherited methods

From class java.lang.Object
From interface java.io.Closeable
From interface java.lang.AutoCloseable

Public constructors

InputStream

Added in API level 1
InputStream ()

Public methods

available

Added in API level 1
int available ()

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

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

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

available类方法 InputStream总是返回 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 if an I/O error occurs.

close

Added in API level 1
void close ()

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

close方法 InputStream什么都不做。

Throws
IOException if an I/O error occurs.

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 if an I/O error occurs.

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 If the first byte cannot be read for any reason other than end of file, or if the input stream has been closed, or if some other I/O error occurs.
NullPointerException If b is null.
IndexOutOfBoundsException If off is negative, len is negative, or len is greater than b.length - off

也可以看看:

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 If the first byte cannot be read for any reason other than the end of the file, if the input stream has been closed, or if some other I/O error occurs.
NullPointerException if b is null.

也可以看看:

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.

该方法 resetInputStream什么也不做只是抛出一个 IOException

Throws
IOException if this stream has not been marked or if the mark has been invalidated.

也可以看看:

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 if the stream does not support seek, or if some other I/O error occurs.

Hooray!