public abstract class InputStream extends Object implements Closeable
这需要定义一个类InputStream
应用程序必须提供一个方法,返回输入的下一个字节。
BufferedInputStream
,
ByteArrayInputStream
,
DataInputStream
,
FilterInputStream
,
read()
,
OutputStream
,
PushbackInputStream
Constructor and Description |
---|
InputStream() |
Modifier and Type | Method and Description |
---|---|
int |
available()
返回一个可以从这个输入流读取(或跳过)的字节数的估计值,而不阻塞该输入流的下一个方法的调用。
|
void |
close()
关闭此输入流并释放与流关联的任何系统资源。
|
void |
mark(int readlimit)
标记此输入流中的当前位置。
|
boolean |
markSupported()
如果输入流的支持
mark 和
reset 方法。
|
abstract int |
read()
从输入流读取下一个数据字节。
|
int |
read(byte[] b)
读取一定数量的字节从输入流并存入缓冲区阵列
b 。
|
int |
read(byte[] b, int off, int len)
读到
len 字节从输入流读入字节数组数据。
|
void |
reset()
重新定位该流在时间的
mark 方法的位置上呼吁这个输入流。
|
long |
skip(long n)
跳过并丢弃
n 字节从输入流中的数据。
|
public abstract int read() throws IOException
0
到
255
一
int
返回。如果没有可用的字节,因为已到达流的末尾,则返回值
-1
。此方法块,直到输入数据可用,流的结束被检测到,或抛出异常。
子类必须提供这种方法的实现。
-1
如果到达流的末尾。
IOException
如果I/O错误发生。
public int read(byte[] b) throws IOException
b
。实际读取的字节数作为一个整数返回。此方法块,直到输入数据可用,检测到文件结束,或抛出异常。
如果b
长度为零,那么没有字节读0
返回;否则,在试图读至少一个字节。如果没有可用的字节,因为流是在文件的末尾,价值-1
返回;否则,至少有一个字节读入b
。
第一个字节存储在单元b[0]
,未来一到b[1]
,等等。读取的字节数,最多等于b
长度。设K是实际读取的字节数目;这些字节将通过b[
k-1]
存储在元素b[0]
,离开b[
k]
b[b.length-1]
元素通过影响。
InputStream
read(b)
类的方法具有相同的效果:
read(b, 0, b.length)
b
-缓冲区中读取数据。
-1
如果没有更多的数据,因为已到达流的末尾。
IOException
-如果第一个字节不能读以外的其他文件的任何原因,如果输入流被关闭,或者其他一些发生I/O错误。
null
b
NullPointerException
。
read(byte[], int, int)
public int read(byte[] b, int off, int len) throws IOException
len
字节从输入流读入字节数组数据。尝试读
len
字节为多,但数量较少,可以读。实际读取的字节数作为一个整数返回。
此方法块,直到输入数据可用,检测到文件结束,或抛出异常。
如果len
是零,那么没有字节读0
返回;否则,在试图读至少一个字节。如果没有可用的字节,因为流到达文件尾,价值-1
返回;否则,至少有一个字节读入b
。
第一个字节存储在单元b[off]
,未来一到b[off+1]
,等等。读取的字节数,最多等于len
。设K是实际读取的字节数目;这些字节将通过b[off+
k-1]
存储在元素b[off]
,离开b[off+
k]
b[off+len-1]
元素通过影响。
在任何情况下,元件b[0]
通过b[off]
和元素b[off+len]
通过b[b.length-1]
不受影响。
方法重写,继承类的read(b,
InputStream
off,
len)
方法只需调用方法read()
反复。如果第一个这样的电话,结果在一个IOException
,例外是从调用返回read(b,
off,
len)
方法。如果任何后续调用read()
结果在IOException
,例外的是被视为文件结束;字节读到那点存储到b
之前发生异常返回读取的字节数。此方法的默认实现将阻塞直到输入数据len
请求量一直读到文件结束检测,或抛出一个异常。鼓励子类提供了一个更有效的实现这种方法。
b
-缓冲区中读取数据。
off
的起始偏移阵列
b
在写入数据。
len
-的最大字节数读。
-1
如果没有更多的数据,因为已到达流的末尾。
IOException
-如果第一个字节不能读比其他文件的任何理由,或者输入流被关闭,或者其他一些发生I/O错误。
null
b
NullPointerException
。
IndexOutOfBoundsException
-如果
off
是负的,
len
是负的,或
len
大于
b.length - off
read()
public long skip(long n) throws IOException
n
字节从输入流中的数据。
skip
方法的可能,因为种种原因,最终跳过一些较小的字节数,可能
0
。这可能会导致任何一个条件;在
n
字节已经跳过到达了文件的结尾只有一种可能性。跳过的字节数实际返回。如果
n
是负的,
InputStream
类的
skip
方法总是返回0,并且没有字节被跳过。子类可以不同的处理负值的值。
这个班的skip
方法创建一个字节数组,然后反复读到它直到n
字节已读或已到达流的末尾。鼓励子类提供了一个更有效的实现这种方法。例如,实施可能取决于寻求的能力。
n
-被跳过的字节数。
IOException
如果流不支持查找,或者其他一些发生I/O错误。
public int available() throws IOException
值得注意的是,虽然InputStream
一些实现将返回流中的总字节数,许多不。使用这种方法的返回值来分配一个缓冲区来保存在该流中的所有数据,这是不正确的。
这种方法的一个类的实现可以选择如果输入流被调用的方法抛出一个IOException
close()
封闭。
InputStream
类的available
方法总是返回0
。
这种方法应该由子类重写。
0
到达输入流结束时。
IOException
如果I/O错误发生。
public void close() throws IOException
对InputStream
的close
方法不。
close
接口
Closeable
close
接口
AutoCloseable
IOException
如果I/O错误发生。
public void mark(int readlimit)
reset
方法重新定位该流的最后标记的位置以便后续读重读相同的字节。
的readlimit
参数告诉这个输入流,使许多字节在标记位置获取无效阅读。
对mark
一般合同,如果方法markSupported
返回true
,不知流记得打电话mark
读完所有字节并随时准备提供相同的字节如果当方法reset
叫做。然而,流是不需要记住任何数据在所有如果超过readlimit
字节读取前流reset
叫做。
标记一个封闭的流不应该对流产生任何影响。
对InputStream
的mark
方法不。
readlimit
-字节可以在标记位置无效阅读最大限度。
reset()
public void reset() throws IOException
mark
方法的位置上呼吁这个输入流。
对reset
一般合同:
markSupported
返回true
,然后:
mark
称尚未自流创建或读取的字节从流自mark
最后被称为多参数mark
那最后一个电话,然后IOException
可能被抛出。IOException
不抛出,然后流重置到这样的状态,所有字节读因为最近的电话mark
(或自启动文件,如果mark
称尚未)将补给的read
方法的后续调用,其次是任何字节,否则会在下一个输入数据作为呼叫的时间reset
。markSupported
返回false
,然后:
reset
可能抛出一个IOException
。IOException
不抛出,然后流重置到一个固定的状态,取决于输入流中的特定类型和它是如何产生。字节,将给后续的read
方法调用取决于特定类型的输入流。类的方法InputStream
reset
仅仅抛出一个IOException
。
IOException
-如果这流未标记或标记已经失效。
mark(int)
,
IOException
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.