您的位置:首页 > 编程语言 > Java开发

java.io.InputStream.read和java.io.OutputStream.write

2011-08-09 12:34 573 查看
public int read(byte[] b,
int off,
int len)
throws IOException


将输入流中最多 
len
 个数据字节读入 byte 数组。尝试读取 
len
 个字节,但读取的字节也可能小于该值。以整数形式返回实际读取的字节数。

在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。

如果 
len
 为 0,则不读取任何字节并返回 
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]
 的元素都不会受到影响。

类 
InputStream
 的 
read(b,
 
off,
 
len)
 方法重复调用方法 
read()
。如果第一次这样的调用导致 
IOException
,则从对
read(b,
 
off,
 
len)
 方法的调用中返回该异常。如果对 
read()
 的任何后续调用导致 
IOException
,则捕获该异常并将其视为到达文件末尾;到达该点时读取的字节存储在 
b
 中,并返回发生异常之前读取的字节数。在已读取输入数据 
len
的请求数量、检测到文件结束标记、抛出异常前,此方法的默认实现将一直阻塞。建议子类提供此方法更为有效的实现。

参数:
b
 - 读入数据的缓冲区。
off
 - 数组 
b
 中将写入数据的初始偏移量。
len
 - 要读取的最大字节数。
返回:
读入缓冲区的总字节数;如果因为已到达流末尾而不再有数据可用,则返回 
-1


public void write(byte[] b,
int off,
int len)
throws IOException


将指定 byte 数组中从偏移量 
off
 开始的 
len
 个字节写入此输出流。
write(b,
off, len)
 的常规协定是:将数组 
b
 中的某些字节按顺序写入输出流;元素 
b[off]
 是此操作写入的第一个字节,
b[off+len-1]
 是此操作写入的最后一个字节。

OutputStream
 的 
write
 方法对每个要写出的字节调用一个参数的 write 方法。建议子类重写此方法并提供更有效的实现。

如果 
b
 为 
null
,则抛出 
NullPointerException


如果 
off
 为负,或 
len
 为负,或者 
off+len
 大于数组 
b
 的长度,则抛出 IndexOutOfBoundsException。

参数:
b
 - 数据。
off
 - 数据中的初始偏移量。
len
 - 要写入的字节数。
抛出:
IOException
 -
如果发生 I/O 错误。尤其是,如果关闭了输出流,则抛出 
IOException
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  byte 存储 null
相关文章推荐