Java 输入输出相关概念介绍(File、IO 流)(六)

168 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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 抽象类的几个具体的实现子类的具体功能及具体使用。