前言

好久不用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日 于内蒙古呼和浩特。

Java IO流基础总结的更多相关文章

  1. java io 流基础

  2. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  3. 【Java基础】Java IO流的总结

    Java IO流分为输入流和输出流,而输入流和输出流中又分字符流和字节流.顾名思义,输入流则是输入到程序中计算,输出流是把程序的结果输出到文件或者设备.而字符流输入输出以字符为单位,字节流则是以字节为 ...

  4. Java 中级IO流基础及主要API编程

    1. IO流基础知识,流 是字节从源到目的地的运行的轨迹,次序是有意义的, 字节会按照次序进行传递, 比如Hello World 在下图中的传递的轨迹.该图形象的解释了IO中流的概念.流中全是字节.2 ...

  5. Java基础17:Java IO流总结

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  6. 《Java基础知识》Java IO流详解

    Java IO概念 1. 用于设备之间的数据传输. 2. Java 将操作数据流的功能封装到了IO包中. 3. 数据流流向分:输入流和输出流,操作对象为文件. 4. 流按照操作数据分:字节流(通用)和 ...

  7. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  8. Java IO流题库

    一.    填空题 Java IO流可以分为   节点流   和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行. 输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数 ...

  9. Java IO流详尽解析

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

随机推荐

  1. Ubuntu 搜索文件

    1.whereis 文件名 特点:快速,但是是模糊查找 例如: whereis php #会把php,php.ini,php.*所在的目录都找出来. 2.find / -name 文件名 特点:准确, ...

  2. fail-safe fail-fast知多少

    目录 简介 Fail-fast Iterator Fail-fast 的原理 Fail-safe Iterator 总结 fail-safe fail-fast知多少 简介 我们在使用集合类的时候,通 ...

  3. 自定义parallelStream的thread pool

    目录 简介 通常操作 使用自定义ForkJoinPool 总结 自定义parallelStream的thread pool 简介 之前我们讲到parallelStream的底层使用到了ForkJoin ...

  4. 使用Spring Boot搭建你的第一个应用程序

    文章目录 依赖配置 main程序配置 MVC配置 安全配置 存储 Web 页面和Controller 异常处理 测试 结论 Spring Boot是Spring平台的约定式的应用框架,使用Spring ...

  5. 突然地心血来潮,为 MaixPy( k210 micropython ) 添加看门狗(WDT) C 模块的开发过程记录,给后来的人做开发参考。

    事情是前几天群里有人说做个看门狗不难吧,5分钟的事情,然后我就怼了几句,后来才发现,原来真的没有看门狗模块鸭. 那好吧,那我就写一下好了,今天是(2020年4月30日)想着最后一天了,不如做点什么有价 ...

  6. 【linux三剑客】sed命令

    sed - stream editor for filtering and transforming text sed 流编辑器 strem edition,实现对文件的增删改替换查是Linux中第二 ...

  7. 【Linux常见命令】seq命令

    seq - print a sequence of numbers seq命令用于以指定增量从首数开始打印数字到尾数,即产生从某个数到另外一个数之间的所有整数,并且可以对整数的格式.宽度.分割符号进行 ...

  8. 5.Python是怎么解释的?

    Python是怎么解释的? Python language is an interpreted language. Python program runs directly from the sour ...

  9. Linux 下如何产生core文件(core dump设置)

    转自:https://blog.csdn.net/star_xiong/article/details/43529637 今天在Linux下调试C程序时,出现段错误,习惯性的ls下当前目录,发现没有生 ...

  10. 51 NOD 1049 最大子段和 动态规划 模板 板子 DP

    N个整数组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的连续子段和的最大值.当所给的整数均为负数时和为0. 例如:-2,11,-4,13,-5,- ...