一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情。
上篇文章Java 输入输出相关概念介绍(File、IO 流)(五)介绍了OutputStream 的一些需要记在脑子里的基本概念,同时介绍了一些常用的子实现类和不常用的子实现类。本篇文章将会延续上一篇文章的内容做展开讲解,描述OutputStream 的一些常用方法。
close 方法
这个比较简单,就是输出流完成操作之后,关闭资源调用的方法。
outputStream.close()
write 方法
- public abstract void write(int b)
此方法是OutputStream 类中唯一的抽象方法,在非抽象类子类中必须实现这个方法。
但是这个方法用得比较少,一般在子类的实现中使用。
outputStream.write(86);
- public void write(byte[] b)
此方法write(byte b[]) 直接将参数字节数组中的全部内容直接输出。
- public void write(byte[] b,int off,int len)
此方法同上,唯一的区别是要输出的内容已存储在了字节数组b[]中,但实际的输出内容需要通过两个参数确定。
即从数组off 位置开始的len 个字节。
- 此外,要记得,完成输出流里面的内容的输出操作之后,一定更要记得关闭资源。
调用close 方法:
outputStream.close();
flush 方法
- public void flush()
方法的作用其实是命令缓冲区,使其将缓冲区储存的数据全部清空,同时发送给下一级。
直白地理解就是flush() 将会刷空输出流,并输出其中所有被缓存的字节。这是因为某些实现的流支持缓存功能,所有就存在了这个方法,把缓存中所有内容强制输出到流里面去。
切合实际地说就是这个方法,会将所有写入到OutputStream 流中的数据刷到相应的目标媒介中。
比如,如果我们使用了FileOutputStream,那么在程序运行的过程中,写入到这个流中的数据可能并没有真正写入到磁盘中。
即使程序运行完成,所有数据都写入到了FileOutputStream,但是这些数据还是有可能依旧保留在内存的缓冲区中。
我们就可以通过调用flush()方法,可以把缓冲区内的数据刷到磁盘里面。(或者网络等其他目标媒介)
outputStream.flush();
总结
本篇文章重在介绍着几个常用的OutputStream 的方法,也是在实际开发主要用到的。
这系列文章还是有个比较清晰的框架的,就是从概念到使用,挑重点,讲清楚,加深印象,加深理解。
下一篇文章将介绍OutputStream 抽象类的几个具体的实现子类的具体功能及具体使用。