• Java IO流基础总结


    前言

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

    IO流类图结构

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

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

    从我们经常使用的角度来说,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日 于内蒙古呼和浩特。

  • 相关阅读:
    grpc 浅谈
    ticket项目所得
    odoo 安装
    Ubuntu 设置系统环境变量和开机自启动
    supervisor 错误集合
    Python之路--前端知识--HTML
    Python之路--Python基础14--MySQL
    Python之路--Python基础13--异步IO、RedisMemcached缓存、RabbitMQ队列
    Python之路--Python基础12--并发编程之协程
    Python之路--Python基础11--并发编程之线程
  • 原文地址:https://www.cnblogs.com/vipygd/p/11259942.html
Copyright © 2020-2023  润新知