本帖最后由 刘伯阳 于 2012-6-6 22:02 编辑
BufferedOutStream是一个缓冲输出流,flush方法是当你想把BufferedOutStream中的数据立即输出时,就调用。
close方法是关闭流,当你关闭了之后,BufferedOutStream中的数据也就随之被输出,里面就没有东西可以再存放了。
所以当你想结束输出时,close()就可以了,它会自动调用一下flush()然后关闭。
但是当你刷了之后以后还要继续往里面装东西时,就不能close(),因为close()之后流就不存在了。
byte[] buf = new byte[5];
while ((s = fis.read(buf)) > 0 ){
fos.write(buf,0,s);
fos.flush(); //强行刷新缓冲区,清空数据
}
fos.close(); //关闭流
还有,flush()作用是把缓冲区的数据强行输出。如果你不flush就可能会没有真正输出,也就是里面可能有遗存。
相反没有flush不代表它就没有输出,只是可能没有完全输出。调用flush是保证缓存清空输出。
所以记得在close()之前先flush()下。 |