前言

最近老师使用了一周的时间将IO流讲完了,为了不辜负他的心血,将IO分为多个部分进行总结整理,供大家学习参考,也方便自己复习使用!

流概念

  流是个抽象的概念,bai是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等。
  流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,反之我们称为输入流。
  可以将流想象成一个“水流管道”,水流就在这管道中形成了,自然就出现了方向的概念。

IO流概述

当程序需要从某个数据源读入数据的时候,就会开启一个输入流,数据源可以是文件、内存或网络等等。相反地,需要写出数据到某个数据源目的地的时候,也会开启一个输出流,这个数据源目的地也可以是文件、内存或网络等等。

IO流分类

按照数据流向

输入流:从外界(键盘、网络、文件…)读取数据到内存
输出流:用于将程序中的数据写出到外界(显示器、文件…)
数据源 目的地

按照数据类型

字节流:主要用来处理字节或二进制对象。
字节输入流(InputStream)
字节输出流 (OutputStream)
字符流:主要用来处理字符、字符数组或字符串。
字符输入流(Reader)
字符输出流(Writer)

按照功能类型

节点流:从一个特定的数据源读写数据。从一个特定的数据源读写数据。
处理流:“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能。

字节流和字符流的区别:

读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
选取:只要是处理纯文本数据,就优先考虑使用字符流,除此之外都使用字节流。

总结

本篇主要是将流的概述以及io流的分类进行总结一下,下面将对每种进行具体聊!