对Java的I/O流理解
这是很久前另一个BLOG上的,现在不用了。转过来吧,方便查看...
?
输出流
流程示意图:
?
不同的情况:
i如果缓冲区被填满,将自动执行2,3步,把数据转换为字节,写入到下一个缓冲区;
< 将循环执行,未写入的数据源继续写入缓冲区,直到数据被全部写入 >
? ?ii 如果未被填满,则不执行2,3步。
?
API中的一些定义:
ByteArrayOutputStream
?
OutputStreamWriter
?
BufferedWriter
?
还有就是flush( )方法的定义——
?
*需要注意的是,ByteArrayOutputStream中的数组缓冲区初始大小为32字节,随后会按数据大小自动进行调整。
?
?
输入流
流程示意图:

?
?
API中的一些定义:
ByteArrayInputStream
1.ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。
2. 内部计数器跟踪 read 方法要提供的下一个字节。
?
InputStreamReader
BufferedReader
?
close( )方法——
1.?????? 关闭该流并释放与之关联的所有资源。
2.?????? 在关闭该流后,再调用 read()、ready()、mark()、reset() 或 skip() 将抛出 IOException。
3.?????? 关闭以前关闭的流无效。