zoukankan      html  css  js  c++  java
  • 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日 于内蒙古呼和浩特。

  • 相关阅读:
    微信 token ticket jsapi_ticket access_token 获取 getAccessToken get_jsapi_ticket方法
    PHP 日志 记录 函数 支持 数组 对象 新浪 sae 环境 去掉 空格 换行 格式化 输出 数组转字符串
    原生 原始 PHP连接MySQL 代码 参考mysqli pdo
    PHP 数字金额转换成中文大写金额的函数 数字转中文
    使用PHPMailer发送带附件并支持HTML内容的邮件
    设置输出编码格式 header 重定向 执行时间 set_time_limit 错误 报告 级别 error_reporting
    html5 bootstrap pannel table 协议 公告 声明 文书 模板
    指向指针的指针
    二级指针
    c语言:当指针成为参数后
  • 原文地址:https://www.cnblogs.com/vipygd/p/11259942.html
Copyright © 2011-2022 走看看