果冻想
认真玩技术的地方

Java IO流基础总结

前言

好久不用Java的IO流,把好多的基础知识都忘了,昨天在写一段代码,发现好多细节都忘了。那天在组织组内代码评审的时候,发现有人在乱用IO流相关的类,所以还是写篇文章,把这个知识点总结一下。

IO流类图结构

对于Java这种庞大的体系,我们要学某一块知识点,只有从整体上把握,整体上形成一个知识架构,这样才能更好的把握学习内容和学习方向。所以呢,和别的博文一样,上来就先来一张别的博客贴来的类结构图。

Java IO类结构图.jpg

大家先不要被这张图中那么多的类所迷惑了;其实,从这张图来看,结构还是非常清晰的,也是非常简单的。虽然类很多,但是我们常用的也就那么几个,熟悉了整个的调用流程,我们就可以玩的很开心的。下面,我把我们常用的那几个整理出来,如下图所示:

常用类.png

从我们经常使用的角度来说,IO流分为字符流和字节流,下面就分别从字符流和字节流展开说明和总结。

字节流

字节流是指在传输过程中,传输数据的最基本单位是字节的流。

  • 字节输入流
    字节输入流的的抽象基类是InputStream,我们最常用的子类是FileInputStreamBufferedInputStream这两个类。

    FileInputStream被称为文件字节输入流,意思指对文件数据以字节的形式进行读取操作,如读取图片视频等;这种我们经常在读取文件时会用到。

    BufferedInputStream是字节输入缓冲流,在BufferedInputStream的使用过程中,会经常结合一些其它的流一起使用,比如我们看BufferedInputStream的构造函数:

    BufferedInputStream(InputStream in)
    

    BufferedInputStream本质上是通过一个内部缓冲区数组实现的。例如,在新建某输入流对应的BufferedInputStream后,当我们通过read()读取输入流的数据时,BufferedInputStream会将该输入流的数据分批的填入到缓冲区中。每当缓冲区中的数据被读完之后,输入流会再次填充数据缓冲区;如此反复,直到我们读完输入流数据位置。通过BufferedInputStream,我们可以提高字节流的读取和处理速度。

  • 字节输出流
    字节输出流的抽象基类是OutputStream,我们最常用的子类是FileOutputStreamBufferedOutputStream这两个类。

    关于字节输出流这两个常用类就不细说了,和上面的字节输入流一样。

字符流

字符流是指在传输过程中,传输数据的最基本单位是字符的流。

  • 字符输入流
    字符输入流的抽象基类是Reader,我们最常用的子类是BufferedReaderFileReader这两个类。用法不多说了。

  • 字符输出流
    字符输出流的抽象基类是Writer,我们最常用的子类是BufferedWriterFileWriter这两个类。用法也不多说了。

为啥用法不多说呢?因为明白了整个的类结构,接下来的使用也就是API的使用,我们在使用过程中需要重点关注一下编码的问题就OK了。

总结

一篇简单的总结,连代码示例都木有!希望对大家有那么一点点的帮助!

2019年7月28日 于内蒙古呼和浩特。

果冻想,认真玩技术的地方。

赞(0) 打赏
未经允许不得转载:果冻想 » Java IO流基础总结
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

玩技术,我们是认真的

联系我们关于果冻

感谢支持果冻想

支付宝扫一扫打赏

微信扫一扫打赏